一个 python 个项目包含多个包

one python project with multiple packages

我正在从单一脚本转向更大的 python 应用程序。

这是一个包含多个包的应用程序。

package1-> package1/.py 文件

package2-> package2/.py 文件

由于包 1 应该可以单独使用,所以我将其保存在单独的 git 存储库中。 我想在 package2 中做: import package1

感觉最简单的方法是将 project1(在其 git 存储库中)放在 project2 的子目录中,但这听起来不是一个好的解决方案。

我发现的一些答案感觉过时了,我无法让它发挥作用。 (python setup.py 安装)

将 package1 位置添加到 PATH 是一个解决方案,但如果我想将它分发给同事,这不是很好。理想情况下,我 "install" 尽可能轻松地打包。

我读到 "pip" 是首选,但需要一些说明从哪里开始寻找创建包。此外,分发只会在本地进行。

(python3.6。代码将用于linux和windows。)

摘自有问题的 np8 给出的使用 pip 的优秀(但有点隐藏)答案 Importing modules from parent folder: 查看他的回答!

--

1) 添加一个setup.py到根文件夹

setup.py的内容可以简单的

from setuptools import setup, find_packages

setup(name='myproject', version='1.0', packages=find_packages())

基本上"any"setup.py就可以了。这只是一个最小的工作示例。

2) 使用虚拟环境

3) pip install 您的项目处于可编辑状态

使用 pip 安装顶级包 myproject。诀窍是在安装时使用 -e 标志。这样它就以可编辑的状态安装,对.py文件所做的所有编辑都会自动包含在安装包中。

在根目录下,运行

pip install -e .(注意点,它代表 "current directory")

也可以看到使用pip freeze安装