2

私のディレクトリ構造が次のとおりであると仮定します。

C:\Scripts\myscript.py
C:\Scripts\customjson\json.py

myscript.py python スクリプトの上部には次のものがあります。

sys.path.append(os.path.join(os.path.dirname(sys.argv[0]), 'customjson'))
import json

問題は、Python 2.7 に付属しているデフォルトの json パッケージの代わりに使用したい json.py を含む「customjson」フォルダーがあることです。スクリプトが標準のjsonの代わりに「customjson」を使用するようにするにはどうすればよいですか?

4

3 に答える 3

2

最初にcustomjsonディレクトリを次の場所に挿入してみてくださいsys.path

sys.path.insert(0, os.path.join(os.path.dirname(sys.argv[0]), 'customjson'))
import json
于 2012-08-10T19:50:36.790 に答える
0

私は言います:あなたのcustomjsonフォルダをパッケージにします。

それは簡単です:

  1. __init__.pycustomjson フォルダーにという名前のファイルを作成します。パッケージ レベルで特別な定義が必要ない場合は、ファイルを空にすることができます。
  2. importパッケージ内のモジュール (つまり ) を参照するようにステートメントを変更しますimport customjson.json
  3. モジュールへの参照を変更してフル パス (customjson.json.whatever) を使用するか、importステートメントをさらに変更して asas句 ( import customjson.json as json) を含めます。構文を使用している場合from ... import ...、これは不要です。アクセスを書き換えるよりも句を使用するasほうが簡単かもしれませんが、コードを読んで標準の json モジュールを使用していると予想する他のプログラマーを混乱させる可能性があります。

質問で説明したフォルダー レイアウトを考えると、実行中のスクリプトの現在のフォルダーが常にパスに含まれ、そこに customjson パッケージがあるため、このルートを使用する場合、モジュールの検索パスをいじる必要はまったくありません。位置した。

于 2012-08-10T20:17:23.090 に答える
0

次のようなものを使用できます。

import sys
_orig_path = sys.path
sys.path = ["C:\Scripts\customjson"]
import json
sys.path = _orig_path

しかしもちろん、そのコードは移植可能ではありません。移植可能にするには、次を使用できます。

import sys, os
_orig_path = sys.path
sys.path = [
    os.path.abspath(os.path.join(os.path.dirname(__file__), "customjson")),
]
import json
sys.path = _orig_path

json.pyまたは、たとえば に名前を変更することもできますjson2.py。そしてそれをインポートします:

import json2

または、絶対に名前を付ける必要がある場合json:

import json2 as json

..ええ、2 番目の方がよく見えますね。

于 2012-08-10T20:10:25.657 に答える