假设我的目录结构是:
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
问题是,我有一个“customjson”文件夹,其中包含我想要使用的json.py,而不是Python 2.7附带的默认json包。如何使脚本使用“customjson”而不是标准的json?
答案 0 :(得分:2)
尝试首先在sys.path
中插入customjson目录:
sys.path.insert(0, os.path.join(os.path.dirname(sys.argv[0]), 'customjson'))
import json
答案 1 :(得分: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 :(得分:0)
我说:将customjson
文件夹设为package。
很简单:
__init__.py
的文件。如果您不想在包级别定义任何特殊内容,则该文件可以为空。import
语句以引用包中的模块(即import customjson.json
)。import
语句以包含为as
子句(import customjson.json as json
)。如果您使用from ... import ...
语法,则无需这样做。虽然使用as
子句可能比重写访问更容易,但它可能会让任何其他程序员感到困惑,他们会读取您的代码并期望它使用标准的json模块。考虑到你在问题中描述的文件夹布局,如果你走这条路线,你根本不需要乱用模块搜索路径,因为运行脚本的当前文件夹总是包含在customjson包的路径和位置。