使用模块python

时间:2017-09-02 03:23:25

标签: python import module

我正在试图重构一个用Python编写的项目。

整体结构如下:

library:
   codepackage1
   codepackage2
   scripts

有一个安装脚本,可以将脚本文件夹中的所有文件添加到bin中。它还定义了包库,library.codepackage1和library.codepackage2。

问题是每个需要使用另一个包的人都使用以下标识符:

import library.codepackage1

代码包中的两个模块以及脚本都使用此方法。

这很好,但需要

python setup.py install

安装所有要通过运行脚本和模块导入的软件包。

我想分离脚本和模块,以便我可以运行并测试我的更改,而无需在系统中重新安装软件包。

我应该怎么做?

2 个答案:

答案 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有一个开发选项,它创建了一个到存储库的符号链接。

通过这种方式,您可以使用顶级导入,它们将在开发和生产中得到解决。