我在myproject
中克隆了一个Git存储库,在存储库的根目录下有一个__init__.py
,使整个库成为一个可导入的Python包。在
我正试图为这个包编写一个setuptoolssetup.py
,它也将位于存储库的根目录中,__init__.py
文件旁边。我希望setup.py
以包的形式安装它所在的目录。如果设置.py它本身是安装的一部分,但是如果不这样做会更好
是否支持此配置?我可以通过给package_dir= {"": ".."},
一个package_dir= {"": ".."},
参数来使其工作,告诉它在当前目录上方的目录中查找myproject
。但是,这需要始终从名为myproject
的目录安装包,如果它是通过pip
安装的,或者有人正在使用名为myproject-dev
的Git克隆,或者在其他任何情况下,都不会出现这种情况。在
我正在考虑的另一个黑客攻击是存储库中名为.
的符号链接。这应该行得通,但我想先看看有没有更好的办法。在
使用符号链接不会很好地工作(您应该得到递归的嵌套目录),请参见my answer to this other post了解一个难看的方法,但是它有使用
pip
的优点。在另请参见Create editable package setup.py in the same root folder as __init__.py
据我所知,这应该行得通:
^{pr2}$更新
对于可编辑或开发安装,一种方法是手动修改
easy-install.pth
文件。在假设:
/home/user/workspace/empty/project
.venv
python3 -m pip install -e .
或{然后:
/home/user/workspace/empty/project/.venv/lib/python3.6/site-packages/easy-install.pth
/home/user/workspace/empty/project
。在为了让导入按预期工作,可以编辑此行以阅读以下内容:
/home/user/workspace/empty
注:
/home/user/workspace/empty
中所有看起来像Python包的东西都很容易被导入,这就是为什么将项目放在它自己的目录中是一个好主意,在这种情况下,empty
目录只包含project
目录。在project.setup
也是可导入的。在相关问题 更多 >
编程相关推荐