Fra*_*man 3 python pip python-import
我想发送一个我为同学感到自豪的简短代码,并意识到他无法运行它,因为他没有理由安装库.安装当然非常简单 - 但我意识到这可能经常发生,主要是初学者 - 想为它构建一个简单的功能:
def smart_import(package_name):
try:
import package_name
except ImportError:
import pip
pip.main(['install', package_name])
Run Code Online (Sandbox Code Playgroud)
问题是,我真的不知道如何传递包的名称作为一个值可以通过导入调用转换回字符串,但这似乎更复杂然后我想
出于多种原因,这是一个坏主意,主要原因是人们通常不希望Python函数调用自动尝试在他们的机器上安装软件.
以下是此方法存在的其他一些问题:
dateutil
模块由python-dateutil
分发提供.smart_import
其他模块,则会将名称导入错误的命名空间.setuptools
提供setuptools
,easy_install
和pkg_resources
.pip
可能无法安装.--user
,并且您的脚本本身无法知道.pip
可能需要根据您是否在virtualenv中而改变.该怎么做:
将您的代码打包到自己的发行版中.写一个在调用中setup.py
使用install_requires
参数提到依赖关系的文件setup
.请问您的同学pip install mypackage
,并且将在安装时而不是在运行时收集依赖项.您可以将分发直接发送给他们(作为mypackage-0.1.tar.gz
文件或轮子).或者您可以将其上传到索引,例如test pypi.
在Python的包装用户指南是描述如何创建和上传自己的分布的初学者友好的资源.
归档时间: |
|
查看次数: |
72 次 |
最近记录: |