Python 为什么可以';t`virtualenv`find`pkg_resources`?

Python 为什么可以';t`virtualenv`find`pkg_resources`?,python,virtualenv,pkg-resources,python-wheel,Python,Virtualenv,Pkg Resources,Python Wheel,我试图在Ubuntu中使用virtualenv来安装本地虚拟Python环境。当我运行shell命令时: $ virtualenv ./virt_python 它抛出一个异常,无法导入pkg\u资源。但是当我打开Python shell并从pkg\u resources import load\u entry\u point运行良好时。下面是完整的stacktrace以供参考 $ virtualenv ./virt_python New python executable in ./virt_

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

$ virtualenv ./virt_python
它抛出一个异常,无法导入
pkg\u资源
。但是当我打开Python shell并从pkg\u resources import load\u entry\u point
运行良好时。下面是完整的stacktrace以供参考

$ 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
$virtualenv./virt\u python
在./virt_python/bin/python中创建新的python可执行文件
安装安装工具…………完成。
安装pip。。。。。。。
从命令/home/rpsharp/local/…hon/bin/easy_install/usr/local/lib/pytho…pport/pip-1.1.tar.gz完成输出:
回溯(最近一次呼叫最后一次):
文件“/home/rpsharp/local/workspace/invest-natcap.invest-3/virt_python/bin/easy_install”,第5行,在
从打包资源导入加载入口点
ImportError:没有名为pkg_资源的模块
----------------------------------------
…安装pip…完成。
回溯(最近一次呼叫最后一次):
文件“/usr/local/bin/virtualenv”,第9行,在
加载入口点('virtualenv==1.7.1.2','console脚本','virtualenv')()
文件“/usr/local/lib/python2.6/dist-packages/virtualenv.py”,主目录第928行
从不下载=选项。从不下载)
文件“/usr/local/lib/python2.6/dist packages/virtualenv.py”,第1042行,在create_环境中
安装\u pip(py\u可执行文件,search\u dirs=search\u dirs,never\u download=never\u download)
文件“/usr/local/lib/python2.6/dist-packages/virtualenv.py”,第640行,在install\u pip中
过滤器\标准输出=\过滤器\设置)
call_子流程中的文件“/usr/local/lib/python2.6/dist packages/virtualenv.py”,第1006行
%(指令描述,程序返回代码))
OSError:Command/home/rpsharp/local/…hon/bin/easy_install/usr/local/lib/pytho…pport/pip-1.1.tar.gz失败,错误代码为1

我尝试了这里提出的解决方案,但没有任何效果。

我在尝试运行virtualenv时遇到了相同的问题,发现virtualenv安装在/home/{user}/install/lib/python2.7/site-packages中,而python指向/home/{user}/install/bin/virtualenv-您应该通过运行

which virtualenv
所以我不得不卸载并重新安装virtualenv

pip uninstall virtualenv 
pip install virtualenv

这对我有用

问题在于,最新版本从不下载setuptools(distribute)或pip,也不希望在本地找到它们的控制盘。 通常virtualenv会这样说

Cannot find a wheel for setuptools
Cannot find a wheel for pip
在那之后,由于恐惧而失败。这是:

如果没有找到令人满意的局部分布,virtualenv将失败。Virtualenv永远不会下载软件包

您可能需要检查您的环境中是否设置了
VIRTUALENV\u EXTRA\u SEARCH\u DIR
或VIRTUALENV中的相应选项,并禁用此选项

要找出virtualenv实际搜索包的位置,您可以临时在
/usr/local/lib/python2.6/dist packages/virtualenv.py
中添加print语句或类似于
导入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
  • 检查virtualenv的当前版本。正如同一线程中的回答,virtualenv安装在/usr/local/lib/python2.7/dist-packages中。因此,请运行以下命令:

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

  • 它将返回系统上安装的virtualenv版本

  • 现在,更改可执行文件

    $vim/usr/local/bin/virtualenv


  • 将版本更改为上面收到的版本。保存该文件,它将顺利运行。

    请参阅和“只需放置从PyPI下载的相应.whl文件”在哪里可以找到pip*.whl和setuptools*.whl files@PyPI?抱歉,如果这是一个LMGTFY,但我找不到链接…@TomRoche每个页面的底部都有一张桌子。直接链接:我的virtualenv给出了一个不同的错误,“找不到pip”,但有相同的“找不到…的轮子”症状,你的解决方案也对我有效。