我想发送一个简短的代码,我感到自豪的同学,并意识到他将无法运行,因为他没有理由安装库。 安装当然非常简单-但我意识到这可能经常发生,主要是初学者-想为它构建一个简单的函数:
def smart_import(package_name):
try:
import package_name
except ImportError:
import pip
pip.main(['install', package_name])
问题是我真的不知道如何将包的名称作为一个可以由import调用的值传入 我想把一个字符串转换回来,但那似乎比我想的要复杂
这是一个坏主意,原因很多,主要原因是人们通常不希望Python函数调用自动尝试在他们的机器上安装软件。你知道吗
这种方法还存在其他一些问题:
dateutil
模块由python-dateutil
发行版提供。你知道吗smart_import
,则会将名称导入错误的命名空间。你知道吗setuptools
提供setuptools
、easy_install
和pkg_resources
。你知道吗pip
本身可能无法安装。你知道吗user
显式地将发行版安装到homedir中,而您的脚本本身却不知道这一点。你知道吗pip
的调用可能需要根据您是否在virtualenv中而改变。你知道吗该怎么做:
将代码打包到自己的发行版中。编写一个
setup.py
,它在setup
调用中使用install_requires
参数来提到依赖项。让你的同学来pip install mypackage
,依赖关系将在安装时而不是运行时收集。您可以直接将分发内容发送给他们(作为mypackage-0.1.tar.gz
文件或wheel)。或者可以将其上载到test pypi之类的索引。你知道吗Python Packaging User Guide是一个初学者友好的资源,描述如何创建和上传自己的发行版。你知道吗
相关问题 更多 >
编程相关推荐