正在将包\u dir设置为。。?

2024-09-28 01:30:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我在myproject中克隆了一个Git存储库,在存储库的根目录下有一个__init__.py,使整个库成为一个可导入的Python包。在

我正试图为这个包编写一个setuptoolssetup.py,它也将位于存储库的根目录中,__init__.py文件旁边。我希望setup.py以包的形式安装它所在的目录。如果设置.py它本身是安装的一部分,但是如果不这样做会更好

是否支持此配置?我可以通过给package_dir= {"": ".."},一个package_dir= {"": ".."},参数来使其工作,告诉它在当前目录上方的目录中查找myproject。但是,这需要始终从名为myproject的目录安装包,如果它是通过pip安装的,或者有人正在使用名为myproject-dev的Git克隆,或者在其他任何情况下,都不会出现这种情况。在

我正在考虑的另一个黑客攻击是存储库中名为.的符号链接。这应该行得通,但我想先看看有没有更好的办法。在


Tags: 文件pygit目录package参数initmyproject
2条回答

使用符号链接不会很好地工作(您应该得到递归的嵌套目录),请参见my answer to this other post了解一个难看的方法,但是它有使用pip的优点。在

另请参见Create editable package setup.py in the same root folder as __init__.py

据我所知,这应该行得通:

myproject-dev/
├── __init__.py
├── setup.py
└── submodule
    └── __init__.py
^{pr2}$

更新

对于可编辑开发安装,一种方法是手动修改easy-install.pth文件。在

假设:

  • 项目所在地:/home/user/workspace/empty/project
  • 使用虚拟环境.venv
  • 项目安装了python3 -m pip install -e .或{}
  • 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

注:

  • /home/user/workspace/empty中所有看起来像Python包的东西都很容易被导入,这就是为什么将项目放在它自己的目录中是一个好主意,在这种情况下,empty目录只包含project目录。在
  • 模块project.setup也是可导入的。在

相关问题 更多 >

    热门问题