在WebFaction安装Python包时的问题

0 投票
2 回答
1269 浏览
提问于 2025-04-18 12:56

我在用PIP安装软件包的时候遇到问题,最开始是权限被拒绝的错误。然后我试着用easy_install,结果又出现了一个错误:

 Searching for mezzanine
    Reading https://pypi.python.org/simple/mezzanine/
    Reading http://github.com/stephenmcd/mezzanine/
    Reading http://mezzanine.jupo.org/
    Best match: Mezzanine 3.1.8
    Downloading https://pypi.python.org/packages/source/M/Mezzanine/Mezzanine-3.1.8.tar.gz#md5=dcc46016b866ea8de1c87fb9dffd9163
    Processing Mezzanine-3.1.8.tar.gz
    Writing /tmp/easy_install-2cSSS_/Mezzanine-3.1.8/setup.cfg
    Running Mezzanine-3.1.8/setup.py -q bdist_egg --dist-dir /tmp/easy_install-2cSSS_/Mezzanine-3.1.8/egg-dist-tmp-uDjreS
    Traceback (most recent call last):
      File "/usr/local/bin/easy_install", line 8, in ?
        sys.exit(
      File "/usr/local/lib/python2.4/site-packages/setuptools/command/easy_install.py", line 1924, in main
        with_ei_usage(lambda:
      File "/usr/local/lib/python2.4/site-packages/setuptools/command/easy_install.py", line 1911, in with_ei_usage
        return f()
      File "/usr/local/lib/python2.4/site-packages/setuptools/command/easy_install.py", line 1928, in <lambda>
        distclass=DistributionWithoutHelpCommands, **kw
      File "/usr/local/lib/python2.4/distutils/core.py", line 149, in setup
        dist.run_commands()
      File "/usr/local/lib/python2.4/distutils/dist.py", line 946, in run_commands
        self.run_command(cmd)
      File "/usr/local/lib/python2.4/distutils/dist.py", line 966, in run_command
        cmd_obj.run()
      File "/usr/local/lib/python2.4/site-packages/setuptools/command/easy_install.py", line 374, in run
        self.easy_install(spec, not self.no_deps)
      File "/usr/local/lib/python2.4/site-packages/setuptools/command/easy_install.py", line 609, in easy_install
        return self.install_item(spec, dist.location, tmpdir, deps)
      File "/usr/local/lib/python2.4/site-packages/setuptools/command/easy_install.py", line 639, in install_item
        dists = self.install_eggs(spec, download, tmpdir)
      File "/usr/local/lib/python2.4/site-packages/setuptools/command/easy_install.py", line 825, in install_eggs
        return self.build_and_install(setup_script, setup_base)
      File "/usr/local/lib/python2.4/site-packages/setuptools/command/easy_install.py", line 1031, in build_and_install
        self.run_setup(setup_script, setup_base, args)
      File "/usr/local/lib/python2.4/site-packages/setuptools/command/easy_install.py", line 1016, in run_setup
        run_setup(setup_script, args)
      File "/usr/local/lib/python2.4/site-packages/setuptools/sandbox.py", line 68, in run_setup
        DirectorySandbox(setup_dir).run(
      File "/usr/local/lib/python2.4/site-packages/setuptools/sandbox.py", line 120, in run
        return func()
      File "/usr/local/lib/python2.4/site-packages/setuptools/sandbox.py", line 71, in <lambda>
        {'__file__':setup_script, '__name__':'__main__'}
      File "setup.py", line 22
        with open(e, "r") as f:
                ^
    SyntaxError: invalid syntax

之后我再用pip的时候,又出现了不同的错误(不是权限被拒绝的):

 File "/home/rishi/bin/pip", line 8, in ?
    sys.exit(
  File "/usr/local/lib/python2.4/site-packages/pkg_resources.py", line 357, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/usr/local/lib/python2.4/site-packages/pkg_resources.py", line 2394, in load_entry_point
    return ep.load()
  File "/usr/local/lib/python2.4/site-packages/pkg_resources.py", line 2108, in load
    entry = __import__(self.module_name, globals(),globals(), ['__name__'])
  File "/home/rishi/lib/python2.4/pip-1.5.6-py2.4.egg/pip/__init__.py", line 9, in ?
    from pip.log import logger
  File "/home/rishi/lib/python2.4/pip-1.5.6-py2.4.egg/pip/log.py", line 19
    real_consumer = (consumer if not isinstance(consumer, colorama.AnsiToWin32)
                               ^
SyntaxError: invalid syntax

现在我不知道自己哪里出错了,有人能帮我吗?

编辑: 语法错误是因为我用的Python版本不对,我用的是2.4。

OSError: [Errno 13] Permission denied: '/usr/local/lib/python2.7/site-packages/mezzanine'

$which pip的结果是

~/bin/pip

2 个回答

3

只需在你的pip命令后面加上--user选项,这样就会以你当前登录用户的权限来安装软件:

pip2.7 install mezzanine --user
2
  • 正如Daniel Roseman提到的,语法错误是因为使用了Python2.4。
  • 权限问题是因为试图安装到系统的Python中,这需要使用sudo命令或者以root身份进行操作。

可能的解决方案

安装到系统Python中(使用sudo)

$ sudo pip install mezzanine

这样做会影响系统的Python,不太推荐。比如在Docker环境下这样做是可以接受的。

安装到用户个人配置中

$ pip install --user mezzanine

这样会把软件包安装到用户的环境中,不会影响系统的Python。

这种方法更可接受,但可能会导致运行代码的环境变得混乱,因为Python有时会从用户环境中导入,有时又会从系统中导入。

使用virtualenv

假设你已经安装了virtualenv:

$ cd ~/projects
$ mkdir mezza
$ cd mezza
$ virtualenv venv
$ source venv/bin/activate
(venv)$ pip install mezzanine
$ pip freeze
mezzanine==3.1.8

(这里会有更多的行来自freeze命令的输出)。

这会安装到virtualenv中,virtualenv很容易创建和删除,不会干扰其他环境。

使用virtualenvwrapper,你会得到一套额外的工具,这会大大简化你的环境管理。

撰写回答