手动安装Python包

4 投票
1 回答
12717 浏览
提问于 2025-04-17 02:07

我想使用这个链接中的代码:https://github.com/erikvold/Github-to-Lighthouse-Issue-Migrator/blob/master/migrator.py,但是在第8行的评论里写着:

# pip install lighthouse-python-api (probably have to do this manually)

但是当我尝试运行的时候,出现了以下错误:

$ pip install lighthouse-python-api
Downloading/unpacking lighthouse-python-api
  Could not find any downloads that satisfy the requirement lighthouse-python-api
No distributions at all found for lighthouse-python-api
Storing complete log in /Users/erikvold/.pip/pip.log

所以我想我需要手动安装这个包……有人能帮我解释一下,或者给我个链接,告诉我怎么做吗?

1 个回答

6

正如@delnan所说,Lighthouse API的维护者应该创建一个setup.py脚本。不过,不管怎样,有两种方法可以实现你想要的功能,这两种方法都需要了解一下Python模块的概念。

当你在Python中这样导入一个模块时:

import lighthouse

解释器会在你运行脚本的目录中寻找一个名为lighthouse.py的文件。如果在这个目录找不到,它会继续在环境变量PYTHONPATH指定的目录中查找。如果你不知道什么是环境变量,建议你去看看这个链接:http://en.wikipedia.org/wiki/Environment_variable

如果在PYTHONPATH指定的目录中也找不到,解释器会默认使用sys.path这个变量,而这个变量的内容是根据你的安装情况而定的。

我认为Lighthouse的维护者正在做的事情是将这些文件从他下载的目录创建一个符号链接到他默认的安装目录。你可以通过运行Python解释器并查看sys.path变量来快速找出这个目录:

>>> sys.path
['', '/usr/local/lib/python2.6/dist-packages/Paste-1.7.5.1-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/tornado-1.1-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/pymongo-1.10.1-py2.6-linux-x86_64.egg', '/usr/local/lib/python2.6/dist-packages/mongoengine-0.4-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/django_debug_toolbar-0.8.5-py2.6.egg', '/usr/lib/python2.6', '/usr/lib/python2.6/plat-linux2', '/usr/lib/python2.6/lib-tk', '/usr/lib/python2.6/lib-old', '/usr/lib/python2.6/lib-dynload', '/usr/local/lib/python2.6/dist-packages', '/usr/local/lib/python2.6/dist-packages/PIL', '/usr/lib/python2.6/dist-packages', '/usr/lib/python2.6/dist-packages/PIL', '/usr/lib/python2.6/dist-packages/gst-0.10', '/usr/lib/pymodules/python2.6', '/usr/lib/python2.6/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.6/gtk-2.0']

你会看到/usr/local/lib/python2.6/dist-packages/是所有模块所在的文件夹。我相信维护者就是在这里创建了他的文件的符号链接。这不是一个好主意。你不应该直接修改这个目录。

更好的方法是直接下载这些文件,并将它们放在与你的脚本同一个目录下,或者将它们放在一个目录中,并把这个目录添加到PYTHONPATH环境变量中。

撰写回答