`pip install` 来自 python:3.6.8 容器中的自定义 python 包失败(但在容器外工作)
`pip install` a custom python package from within a python:3.6.8 container fails (but works outside the container)
我正在尝试使用 docker 官方 python:3.6.8
图像构建一个容器,该图像将封装我正在开发的 python 包及其依赖项。这个想法是使用 ADD mypkg.tar.gz /pytmp/mypkg
指令为容器提供代码存储库,然后创建一个 virtualenv 并从此环境中安装 mypkg
,然后输出相应的 site-packages
目录以供稍后共享。
我的 Dockerfile 首先通过 apt-get
获得 virtualenv
然后创建虚拟环境并尝试在压缩之前安装包 site-packages
:
RUN cd /pytmp && \
virtualenv -p /usr/local/bin/python3 venv && \
source venv/bin/activate && \
pip install -v mypkg
RUN cd /pytmp/venv/lib/python3.6/ && \
zip -r /python_packages.zip site-packages/
在我的系统 (ubuntu 18.04) 下,我可以从 mypkg
根目录做一个工作 pip install .
。但是在容器内部,安装失败并出现错误
ERROR: Could not find a version that satisfies the requirement mypkg (from versions: none)
ERROR: No matching distribution found for mypkg
pip 是否在 pypi 上寻找 mypkg?我的指示有问题吗?
我正在使用仅 setup.cfg
的方案。 setup.cfg
包含以下内容
[options]
packages = find_namespace:
package_dir =
=src
install_requires=
numpy
pyspark
sklearn
pylint
pre-commit
[options.extras_require]
test = pytest
docs = Sphinx; sphinx-rtd-theme
[options.packages.find]
where=src
感谢您的帮助!
它可能会失败,因为您将它指向一个看起来像包名而不是目录的东西。确保你正在做 pip install /actual/path/to/your/package
,至少在末尾有一个斜杠,可能需要完整路径,因为现在它将尝试从 PyPI 安装。
但是:您真的不应该分发 site-packages
。对于库,只需分发您的 tarball。如果您要分发应用程序,完整的 Docker 图像可能有效,或者您可以使用 PyInstaller 或其他工具(https://pythonspeed.com/articles/distributing-software/ 进行了调查)。
我正在尝试使用 docker 官方 python:3.6.8
图像构建一个容器,该图像将封装我正在开发的 python 包及其依赖项。这个想法是使用 ADD mypkg.tar.gz /pytmp/mypkg
指令为容器提供代码存储库,然后创建一个 virtualenv 并从此环境中安装 mypkg
,然后输出相应的 site-packages
目录以供稍后共享。
我的 Dockerfile 首先通过 apt-get
获得 virtualenv
然后创建虚拟环境并尝试在压缩之前安装包 site-packages
:
RUN cd /pytmp && \
virtualenv -p /usr/local/bin/python3 venv && \
source venv/bin/activate && \
pip install -v mypkg
RUN cd /pytmp/venv/lib/python3.6/ && \
zip -r /python_packages.zip site-packages/
在我的系统 (ubuntu 18.04) 下,我可以从 mypkg
根目录做一个工作 pip install .
。但是在容器内部,安装失败并出现错误
ERROR: Could not find a version that satisfies the requirement mypkg (from versions: none)
ERROR: No matching distribution found for mypkg
pip 是否在 pypi 上寻找 mypkg?我的指示有问题吗?
我正在使用仅 setup.cfg
的方案。 setup.cfg
包含以下内容
[options]
packages = find_namespace:
package_dir =
=src
install_requires=
numpy
pyspark
sklearn
pylint
pre-commit
[options.extras_require]
test = pytest
docs = Sphinx; sphinx-rtd-theme
[options.packages.find]
where=src
感谢您的帮助!
它可能会失败,因为您将它指向一个看起来像包名而不是目录的东西。确保你正在做 pip install /actual/path/to/your/package
,至少在末尾有一个斜杠,可能需要完整路径,因为现在它将尝试从 PyPI 安装。
但是:您真的不应该分发 site-packages
。对于库,只需分发您的 tarball。如果您要分发应用程序,完整的 Docker 图像可能有效,或者您可以使用 PyInstaller 或其他工具(https://pythonspeed.com/articles/distributing-software/ 进行了调查)。