MLg*_*guy 5 python pip requirements.txt python-packaging
我的 python 包依赖于不在 pypi 中的私有包。你可以假设私有包的结构是这样的。
目标:以任何方式将 3rd 方私有包存储在我自己的包中的某个位置,以便在我运行时pip install -r requirements.txt
(甚至更好pip install <my_pkg_name>
)安装 3rd 方依赖项。这必须适用于 Windows 和 Linux。
一个潜在的解决方法:不要安装第 3 方模块。相反,将其按原样放置在主包目录import
及其模块中。
/my_pkg
/non_pypi_pkg
/my_pkg
module.py
Run Code Online (Sandbox Code Playgroud)
哪里module.py
可以import non_pypi_pkg
不用安装non_pypi_pkg
。
问题:实现目标的推荐做法是什么?我们可以做得比我的解决方法更好吗?
当我使用第三方包时,我经常使用以下方法之一setuptools
:
setup.py
。具有以下结构:
\n/my_pkg\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 /my_pkg\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 module.py\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 setup.py\n
Run Code Online (Sandbox Code Playgroud)\n安装程序.py
\nsetup(\n name="my_pkg",\n version="0.0.0",\n packages=find_packages(),\n install_requires=[\'flask\', \n \'non_pypi_pkg @ https://github.com/<user>/non_pypi_pkg/archive/main.zip#egg=non_pypi_pkg-0.0.1\',\n ]\n)\n
Run Code Online (Sandbox Code Playgroud)\n\n\n当存储库是私有的时,我使用个人访问令牌(由 github 提供),在同一个示例中可以是
\npkg @ https://<token>@github.com/<user>/pkg/...
pip install -e my_pkg
具有以下结构:
\n/\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 my_pkg\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 my_pkg\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 module.py\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 setup.py\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 non_pypi_pkg\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 non_pypi_pkg\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 module_b.py\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 setup.py\n
Run Code Online (Sandbox Code Playgroud)\n/non_pypi_pkg/setup.py
\nsetup(\n name="non_pypi_pkg",\n version="0.0.1",\n packages=find_packages(),\n install_requires=[]\n)\n
Run Code Online (Sandbox Code Playgroud)\n/my_pkg/setup.py
\nsetup(\n name="my_pkg",\n version="0.0.0",\n packages=find_packages(),\n install_requires=[\'flask\', \'non_pypi_pkg\']\n)\n
Run Code Online (Sandbox Code Playgroud)\n这里需要按照依赖顺序安装。例如:
\n pip install -e non_pypi_pkg; pip install -e my_pkg;\n
Run Code Online (Sandbox Code Playgroud)\n\n\n我更喜欢使用脚本来
\nMakefile
完成这些任务,但也可以使用 abash
或power-shell
脚本,如下所示:
pip install -e non_pypi_pkg; pip install -e my_pkg;\n
Run Code Online (Sandbox Code Playgroud)\n
归档时间: |
|
查看次数: |
1268 次 |
最近记录: |