0

私はdjango 1.5でwadofstuffのシリアライザーhttps://pypi.python.org/pypi/wadofstuff-django-serializersを使用しています。ただし、現在は非推奨になっている simplejson を使用しているため、ライブラリ ファイルに直接移動して、wadofstuff/django/serializers/json.pysimplejson を json に変更する必要があります。問題はimport json、ライブラリファイルにも名前が付けられjson.pyているため、それ自体をロードしようとするためできないことです。私のチームの他の開発者は間違いなく私を殺すので、ファイル名を変更したくありません。絶対パスからjsonをインポートする方法はありますか?

ありがとうございました。

4

4 に答える 4

2

これを (Python 2.x で) 修正する最も簡単で、おそらく最善の方法は、最上位の stdlib/site-packages モジュールの名前を隠すモジュールを持たないようにすることです。

つまり、名前json.pyを別のものに変更します。次にimport json、名前を変更したファイル内から実行できます (または、2.5 の互換性を壊さないようtryに にImportErrorフォールバックすることをお勧めします)。simplejson次に、インポートしていたコードを変更しserializers.jsonて、新しいものをインポートします。

wadostuff パッケージに対してバグを報告し、パッチを提出できるはずです。バージョン 1.2 になる可能性があります。(更新は年に 1 回程度のようで、2013 年に最終的に Python 2.6 と Django 1.5 の速度に追いつくのはそれほど不合理ではないようです…)

于 2013-03-16T08:06:31.930 に答える
0

もう 1 つの方法は、現在のディレクトリを検索パスから削除することです。""(現在のディレクトリを示す)がsys.path(デフォルト)の先頭にあると仮定します。

sys.path.remove("")
import json
sys.path.insert(0, "")
于 2013-03-16T07:54:42.393 に答える
0

この行を の上に置くことができますjson.py:

from __future__ import absolute_import

これにより、Python は、このモジュールをインポートするときに、sys.path でのみモジュールを検索し、それに関連するモジュールを検索しないように指示されます ( http://www.python.org/dev/peps/pep-0328/#rationale-も参照)。 for-absolute-imports )。

編集:

また、wadofstuffのモジュールは実際には simplejson を直接インポートしないことに注意してください: from django.utils import simplejson. simplejson がインストールされていない場合、 Django コードはデフォルトで stdlib バージョンを使用します。

于 2013-03-16T08:05:35.217 に答える
-1

1、pythonのインポートパスを変更してみてください:

sys.path.insert(0, "/path/to/your/json.py/dir")
import json

2、_ _ init _ _.py ファイルを json.py のすべてのディレクトリに追加してみてください。これを使用できます

import a.b.c.json as myjson

3、少しも変えたくない場合は、何か深いものを試してください

__import__()
于 2013-03-16T07:49:28.663 に答える