使用 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 成功了。

希望对您有所帮助。