Python 是否将包_dir设置为。。?
我将一个Git存储库克隆到了Python 是否将包_dir设置为。。?,python,packaging,setuptools,distribute,Python,Packaging,Setuptools,Distribute,我将一个Git存储库克隆到了myproject,在存储库的根目录下有一个\uuu init\uuuuuuuuuupy,使整个东西成为一个可导入的Python包 我正在尝试为这个包编写setuptoolssetup.py,它也将位于存储库的根目录中,位于\uuuuuu init\uuuuuuuuuuuuuuuupy文件旁边。我希望setup.py将它所在的目录作为一个包安装到中。如果setup.py本身作为安装的一部分出现是可以的,但是如果它没有出现则更好。理想情况下,这也应该在可编辑模式下工作(
myproject
,在存储库的根目录下有一个\uuu init\uuuuuuuuuupy
,使整个东西成为一个可导入的Python包
我正在尝试为这个包编写setuptoolssetup.py
,它也将位于存储库的根目录中,位于\uuuuuu init\uuuuuuuuuuuuuuuupy
文件旁边。我希望setup.py
将它所在的目录作为一个包安装到中。如果setup.py本身作为安装的一部分出现是可以的,但是如果它没有出现则更好。理想情况下,这也应该在可编辑模式下工作(pip安装-e.
)
是否支持此配置?我可以通过在setup()
中设置一个package_dir={“:”。“},
参数,告诉它在当前项目上方的目录中查找myproject
,来实现它。但是,这需要始终从名为myproject
的目录安装包,如果它是通过pip
安装的,或者如果有人正在使用名为myproject dev
的Git克隆,或者在任何其他情况下,情况似乎都不是这样
我正在考虑的另一个黑客攻击是在存储库中使用名为
mypackage
的
符号链接。这应该行得通,但我想先看看是否有更好的方法。使用符号链接不会很好地工作(您应该得到递归嵌套目录),请参阅一个难看的hack,但它的优点是使用pip
另请参阅
据我所知,这应该是可行的:
myproject-dev/
├── __init__.py
├── setup.py
└── submodule
└── __init__.py
更新 对于可编辑或开发安装,一种方法是手动修改
easy install.pth
文件
假设:
- 项目位于:
李>/home/user/workspace/empty/project
- 使用虚拟环境
李>.venv
- 该项目安装有
或python3-m pip install-e.
李>python3 setup.py develope
- Python版本是3.6
- 该文件位于
/home/user/workspace/empty/project/.venv/lib/python3.6/site-packages/easy-install.pth等位置李>
- 它的内容是:
/home/user/workspace/empty/project
- 它的内容是:
/home/user/workspace/empty
中所有看起来像Python包的东西都很容易被导入,这就是为什么最好将项目放在自己的目录中,在这种情况下,目录/home/user/workspace/empty
只包含目录empty
项目
- 模块
也可导入项目设置
#!/usr/bin/env python3
import setuptools
setuptools.setup(
name='MyProject',
version='0.0.0.dev0',
packages=['myproject', 'myproject.submodule'],
package_dir={
'myproject': '.',
},
)