gpt4 book ai didi

python - 将 package_dir 设置为 ..?

转载 作者:行者123 更新时间:2023-12-04 08:44:49 27 4
gpt4 key购买 nike

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

我正在尝试编写一个 setuptools setup.py对于软件包,它也将位于存储库的根目录中,在 __init__.py 旁边文件。我要setup.py安装它所在的目录作为一个包。如果 setup.py 本身作为安装的一部分出现很好,但如果没有它会更好。理想情况下,这也应该在可编辑模式下工作(pip install -e .)

是否完全支持此配置?我可以通过 package_dir= {"": ".."}, 让它工作setup() 的参数,告诉它寻找 myproject在当前目录上方的目录中。但是,这要求软件包始终从名为 myproject 的目录安装。 ,如果是通过 pip 安装,则情况似乎并非如此。 ,或者如果有人正在使用名为 myproject-dev 的 Git 克隆,或在任何其他情况下。

我正在考虑的另一个 hack 是指向 . 的符号链接(symbolic link)。命名为 mypackage存储库内部。这应该可行,但我想先检查是否有更好的方法。

最佳答案

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

据我所知,这应该有效:

myproject-dev/
├── __init__.py
├── setup.py
└── submodule
└── __init__.py
#!/usr/bin/env python3
import setuptools
setuptools.setup(
name='MyProject',
version='0.0.0.dev0',
packages=['myproject', 'myproject.submodule'],
package_dir={
'myproject': '.',
},
)

更新

使这项工作适用于可编辑或开发安装的一种方法是手动修改 easy-install.pth文件。

假设:
  • 项目地址:/home/user/workspace/empty/project ;
  • 虚拟环境.venv用来;
  • 该项目安装有python3 -m pip install -e .python3 setup.py develop ;
  • 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也是可以导入的。
  • 关于python - 将 package_dir 设置为 ..?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17756742/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com