我正在试图重构一个用Python编写的项目。
整体结构如下:
library:
codepackage1
codepackage2
scripts
有一个安装脚本,可以将脚本文件夹中的所有文件添加到bin中。它还定义了包库,library.codepackage1和library.codepackage2。
问题是每个需要使用另一个包的人都使用以下标识符:
import library.codepackage1
代码包中的两个模块以及脚本都使用此方法。
这很好,但需要
python setup.py install
安装所有要通过运行脚本和模块导入的软件包。
我想分离脚本和模块,以便我可以运行并测试我的更改,而无需在系统中重新安装软件包。
我应该怎么做?
答案 0 :(得分:0)
你检查过PYTHONPATH吗?如果包的路径位于顶部od sys路径,那么python将从您的位置获取它。
要在运行时检查它:
import sys
print '\n'.join(sys.path)
强制使用来自给定位置的包而不是pip或任何默认位置:
# script_that_imports_library.py
import sys, os
THIS_DIR = os.path.dirname(os.path.abspath(__file__))
sys.path.insert(0, THIS_DIR)
# or if it is e.g. one level above:
sys.path.insert(0, os.path.dirname(THIS_DIR))
import library
# to check where it's imported from:
print 'the library comes from: %s' % library.__file__
答案 1 :(得分:0)
经过大量搜索,我发现setup.py有一个开发选项,它创建了一个到存储库的符号链接。
通过这种方式,您可以使用顶级导入,它们将在开发和生产中得到解决。