为什么不能`virtualenv`找到`pkg_resources`?(Why can't

2019-07-29 08:45发布

我试图使用的virtualenv在Ubuntu安装本地虚拟Python环境。 当我运行shell命令:

$ virtualenv ./virt_python

它抛出,它无法导入例外pkg_resources 。 但是,当我打开一个Python外壳和from pkg_resources import load_entry_point运行良好。 作为参考,完整的堆栈跟踪如下。

$ virtualenv ./virt_python
New python executable in ./virt_python/bin/python
Installing setuptools............done.
Installing pip.......
  Complete output from command /home/rpsharp/local/...hon/bin/easy_install /usr/local/lib/pytho...pport/pip-1.1.tar.gz:
  Traceback (most recent call last):
  File "/home/rpsharp/local/workspace/invest-natcap.invest-3/virt_python/bin/easy_install", line 5, in <module>
    from pkg_resources import load_entry_point
ImportError: No module named pkg_resources
----------------------------------------
...Installing pip...done.
Traceback (most recent call last):
  File "/usr/local/bin/virtualenv", line 9, in <module>
    load_entry_point('virtualenv==1.7.1.2', 'console_scripts', 'virtualenv')()
  File "/usr/local/lib/python2.6/dist-packages/virtualenv.py", line 928, in main
    never_download=options.never_download)
  File "/usr/local/lib/python2.6/dist-packages/virtualenv.py", line 1042, in create_environment
    install_pip(py_executable, search_dirs=search_dirs, never_download=never_download)
  File "/usr/local/lib/python2.6/dist-packages/virtualenv.py", line 640, in install_pip
    filter_stdout=_filter_setup)
  File "/usr/local/lib/python2.6/dist-packages/virtualenv.py", line 1006, in call_subprocess
    % (cmd_desc, proc.returncode))
OSError: Command /home/rpsharp/local/...hon/bin/easy_install /usr/local/lib/pytho...pport/pip-1.1.tar.gz failed with error code 1

我想在这里提出的解决方案https://stackoverflow.com/a/10538412/42897 ,但没有任何效果。

Answer 1:

我试图运行的virtualenv当同样的问题,发现安装在/home/{user}/install/lib/python2.7/site-packages而蟒蛇指着到/ home / {}用户的的virtualenv /安装/斌/ virtualenv中 - 你应该通过运行知道这

which virtualenv

因此,我不得不卸载并重新安装的virtualenv

pip uninstall virtualenv 
pip install virtualenv

这为我工作。



Answer 2:

问题是,最近的版本从未下载既不setuptools的(分配),也不点子,并希望在本地找到他们的车轮。 通常的virtualenv说像

  Cannot find a wheel for setuptools
  Cannot find a wheel for pip

和失败后的导入错误。 这是记录 :

如果没有找到满意的地方分布的virtualenv会失败。 VIRTUALENV永远不会下载软件包。

您可能要检查是否有VIRTUALENV_EXTRA_SEARCH_DIR在环境中设置或virtualenv中的相应选项的配置文件 ,并禁用它。

为了找出其中的virtualenv实际搜索就可以临时添加在任何打印报表包/usr/local/lib/python2.6/dist-packages/virtualenv.py或somethig像import pdb; pdb.set_trace() import pdb; pdb.set_trace() 有问题的功能是find_wheels你使它看起来是这样的:

    def find_wheels(projects, search_dirs):
        # … skipping docstring and comments
        for project in projects:
            for dirname in search_dirs:
                print '*** search_dir:', dirname
                files = glob.glob(os.path.join(dirname, project + '-*.whl'))
                if files:
                    wheels.append(os.path.abspath(files[0]))
                    break
            else:
                logger.fatal('Cannot find a wheel for %s' % (project,))

        return wheels


Answer 3:

  1. 检查的virtualenv的当前版本。 作为回答user2676043在同一个线程,virtualenv中安装在/usr/local/lib/python2.7/dist-packages。 因此,运行以下命令:

    $ python /usr/local/lib/python2.7/dist-packages/virtualenv.py --version

这将返回系统上安装的virtualenv的版本。

  1. 现在,更改可执行文件。

    $ vim /usr/local/bin/virtualenv

更改版本上面收到的一个。 保存文件,工作平稳。



文章来源: Why can't `virtualenv` find `pkg_resources`?