如何解决如何从virtualenv中“导入apt”?
我已经编写了一个Python工具脚本,该脚本依赖于Debian软件包python3-apt:
import apt
...
def get_packages():
cache = apt.Cache()
for pkg in cache:
if pkg.installed and pkg.name in PACKAGE_LIST:
yield pkg.name
我现在正在将该脚本扩展到一个项目中,最终目的是使其可以在PyPI上和/或作为Debian软件包本身使用。
我使用virtualenvs隔离我的Python开发环境。我需要在virtualenv中添加什么软件包名称(或路径),以便可以在该环境中调用import apt
?
到目前为止,我已经尝试过:
- apt on PyPI。奇怪的旧版本。
- vext。当前不支持apt。
- other things on PyPI that start with "apt"。它们都不是
python3-apt
的简单中介。
解决方法
您可以通过以下方式使用pipenv实现此目的(类似的说明也适用于其他venv管理器):
pipenv --site-packages # see note 1
PIP_IGNORE_INSTALLED=1 pipenv install # see note 2
您更有可能将其运行为:
pipenv --site-packages
PIP_IGNORE_INSTALLED=1 pipenv install -e . --dev
# treats codebase as a package,also installs dev dependencies
注意1::我们必须访问系统程序包(也称为网站程序包),以便可以import apt
。
注意2: ...但是我们更喜欢virtualenv软件包而不是系统软件包。看到 https://pipenv.pypa.io/en/latest/advanced/#working-with-platform-provided-python-components了解详情。
评论:
-
这意味着您的venv中也可以使用未在Pipfile中定义的所有 other 系统软件包。您必须记住,使用相同代码库的其他开发人员不一定可以使用它们。如果您有基本的CI环境,它应该可以解决此问题。
-
此方法适用于vext不支持的其他软件包。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。