我遇到了一些脚本问题,我编写了一些脚本来测试我编写的解析器。当使用当前工作目录作为sys.path的一部分时,Python(27和3)似乎都不像IronPython。因此,我的内部包路径不起作用。
这是我的包装布局。
MyPackage
__init__.py
_test
__init__.py
common.py
parsers
__init__.py
_test
my_test.py
我正在尝试从MyPackage目录中调用脚本。
命令行语句:
python ./parsers/_test/my_test.py
ipy ./parsers/_test/my_test.py
my_test.py文件中的import语句是。
from _test.common import TestClass
在python场景中,我只获得附加到sys.path的MyPackage / parsers / _test目录,因此无法找到MyPackage。在IronPython场景中,MyPackage / parsers / _test目录和MyPackage /都在sys.path中。如果我从_test目录中调用测试,我可能得到相同的错误引用(它不知道MyPackage)。即使我将测试文件合并到_test目录中,我仍然会遇到此路径问题。
我应该注意,我刚测试过,如果我做了类似
的事情import sys
import os
sys.path.append(os.getcwd())
它会正确加载。但我必须为每个文件执行此操作。
无论如何都要解决这种路径问题而不执行以下操作。
一个。在每个文件中附加sys.path的相对路径。
B中。附加PATH以包含MyPackage(我不希望我的包作为python“全局”系统路径的一部分)
非常感谢您的任何提示!
答案 0 :(得分:1)
有两种选择:
使用环境变量PYTHONPATH并包含。
将其添加到程序开头的sys.path
import sys.path sys.path.append('.')
import somemodule import sys dirname = os.path.dirname(os.path.abspath(somemodule.__file__)) sys.path.append(dirname)