使用 setup.py 安装后导入 python 包而不重新启动?
Import python package after installing it with setup.py, without restarting?
我有一个包,我想在我自己的 Python 脚本中自动安装和使用。
现在我有这个:
>>> # ... code for downloading and un-targzing
>>> from subprocess import call
>>> call(['python', 'setup.py', 'install'])
>>> from <package> import <name>
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named <package>
那我可以这样继续:
>>> exit()
$ python
>>> from <package> import <name>
而且效果很好。出于某种原因,如果我在 运行 宁 setup.py
文件后重新启动,Python 能够很好地获取包,但如果我不这样做则不能。如果中间没有重启步骤,我怎样才能让它工作?
(此外,在 python 脚本中使用 subprocess.call()
代替 运行 setup.py
是否有更好的替代方法?产生一个全新的 Python 解释器,但我不知道如何传递安装参数。)
根据您的 Python 版本,您需要查看 imp
or importlib
。
例如对于 Python 3,你可以这样做:
from importlib.machinery import SourceFileLoader
directory_name = # os.path to module
# where __init__.py is the module entry point
s = SourceFileloader(directory_name, __init__.py).load_module()
或者,如果您有勇气让您的 Python 路径知道该目录:
map(__import__, 'new_package_name')
希望这对您有所帮助,
我从 GitHub 下载了 seaborn。
通过命令提示符,cd 到 downloads\seaborn 文件夹
python install setup.py
然后使用来自 anaconda 的 spyder,检查它是否被 运行 安装在控制台中
import pip
sorted(["%s==%s" % (i.key, i.version)
for i in pip.get_installed_distributions()])
看到没有,去工具里select"Update module names list"
再次在 python 控制台中尝试之前的代码,库仍然没有显示。
重新启动 Spyder 并尝试 import seaborn
成功了。
希望对您有所帮助。
我有一个包,我想在我自己的 Python 脚本中自动安装和使用。
现在我有这个:
>>> # ... code for downloading and un-targzing
>>> from subprocess import call
>>> call(['python', 'setup.py', 'install'])
>>> from <package> import <name>
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named <package>
那我可以这样继续:
>>> exit()
$ python
>>> from <package> import <name>
而且效果很好。出于某种原因,如果我在 运行 宁 setup.py
文件后重新启动,Python 能够很好地获取包,但如果我不这样做则不能。如果中间没有重启步骤,我怎样才能让它工作?
(此外,在 python 脚本中使用 subprocess.call()
代替 运行 setup.py
是否有更好的替代方法?产生一个全新的 Python 解释器,但我不知道如何传递安装参数。)
根据您的 Python 版本,您需要查看 imp
or importlib
。
例如对于 Python 3,你可以这样做:
from importlib.machinery import SourceFileLoader
directory_name = # os.path to module
# where __init__.py is the module entry point
s = SourceFileloader(directory_name, __init__.py).load_module()
或者,如果您有勇气让您的 Python 路径知道该目录:
map(__import__, 'new_package_name')
希望这对您有所帮助,
我从 GitHub 下载了 seaborn。
通过命令提示符,cd 到 downloads\seaborn 文件夹
python install setup.py
然后使用来自 anaconda 的 spyder,检查它是否被 运行 安装在控制台中
import pip
sorted(["%s==%s" % (i.key, i.version)
for i in pip.get_installed_distributions()])
看到没有,去工具里select"Update module names list"
再次在 python 控制台中尝试之前的代码,库仍然没有显示。
重新启动 Spyder 并尝试 import seaborn
成功了。
希望对您有所帮助。