我将一个Git存储库克隆到了myproject
中,在存储库的根目录下有一个__init__.py
,使整个内容成为一个可导入的Python包
我正在尝试为这个包编写setuptoolssetup.py
,它也将位于存储库的根目录中__init__.py
文件旁边。我希望setup.py
将它所在的目录作为一个包安装到中。如果setup.py本身作为安装的一部分出现是可以的,但是如果它没有出现则更好。理想情况下,这也应该在可编辑模式下工作(pip install -e .
)
是否支持此配置?我可以通过给setup()
设置一个package_dir= {"": ".."},
参数,告诉它在当前目录上方的目录中查找myproject
来实现它。但是,这需要始终从名为myproject
的目录安装包,如果它是通过pip
安装的,或者如果有人正在使用名为myproject-dev
的Git克隆,或者在任何其他情况下,情况似乎都不是这样
我正在考虑的另一个黑客是指向存储库中名为mypackage
的.
的符号链接。这应该行得通,但我想先看看是否有更好的办法
使用符号链接将不能很好地工作(您应该得到递归嵌套目录),请参阅my answer to this other post了解一个丑陋的hack,但它具有使用
pip
的优点另见Create editable package setup.py in the same root folder as __init__.py
据我所知,这应该是可行的:
更新
对于可编辑或开发安装,一种方法是手动修改
easy-install.pth
文件假设:
/home/user/workspace/empty/project
李>.venv
李>python3 -m pip install -e .
或python3 setup.py develop
李>然后:
/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
也是可导入的李>相关问题 更多 >
编程相关推荐