虚拟与Pip悬挂

2024-04-24 23:55:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用一个virtualenv运行一个django项目,直到今天下午它都运行得很好。我去运行source my-env/bin/activate,它似乎激活了(它给了我通常的命令提示符),但是当我尝试python manage.py runserver时,它说它找不到django。我运行了一个python脚本,并尝试导入django,它肯定地说没有名为django的模块。所以我删除了这个virtualenv并创建了一个新的virtualenv并做了一个pip install -r requirements.txt。然后我注意到pip是永远挂着的,在类型^C上,它将给出我下面提供的一个长时间的回溯。一旦发生这种情况,我再次尝试删除virtualenv,并在输入virtualenv new-env时重新开始,它将挂起“安装工具、pip、wheel…”并在输入^C时进行长时间的回溯。我浏览了所有的网上论坛,并尝试了一切办法来解决这个问题,但似乎没有任何效果。如果有人对如何解决这个问题有任何想法,我将非常感激。在

Installing setuptools, pip, wheel...^CTraceback (most recent call last):
  File "/usr/local/bin/virtualenv", line 11, in <module>
done.
    sys.exit(main())
  File "/usr/local/lib/python2.7/site-packages/virtualenv.py", line 669, in main
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/virtualenv.py", line 2327, in <module>
    raise SystemExit(popen.wait())
  File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1384, in wait
    main()
  File "/usr/local/lib/python2.7/site-packages/virtualenv.py", line 711, in main
    symlink=options.symlink)
  File "/usr/local/lib/python2.7/site-packages/virtualenv.py", line 944, in create_environment
    download=download,
  File "/usr/local/lib/python2.7/site-packages/virtualenv.py", line 900, in install_wheel
    call_subprocess(cmd, show_stdout=False, extra_env=env, stdin=SCRIPT)
  File "/usr/local/lib/python2.7/site-packages/virtualenv.py", line 767, in call_subprocess
    line = stdout.readline()
keyboardInterrupt
    pid, sts = _eintr_retry_call(os.waitpid, self.pid, 0)
  File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 476, in _eintr_retry_call
    return func(*args)
KeyboardInterrupt

Tags: pipdjangoinpyenvvirtualenvmainlib
3条回答

老兄,我在长期的痛苦之后解决了这个问题。
重新安装以下软件包pip\setuptools\wheels和几个选项。在

python -m pip install <package_name>  upgrade  force-reinstall  no-binary <package_name>    

这个问题可能是由于上面某个包的版本不向后兼容造成的。在

可能不是很有帮助,但我也经历了同样的症状,并发现使用verbose选项很有帮助:

mkvirtualenv new-env -v

输出指出了我遇到的代理问题,阻止了setuptools的使用,我通过修复代理设置解决了这个问题:

^{pr2}$

我在这方面遇到了很多麻烦,我从各种StackOverflow讨论中尝试的都没有帮助。我已经确定这不是一个网络问题,事实上我希望从Ubuntu16升级到18可以神奇地修复它。。。但它没有,所以我想我应该把它修好。在

我开始怀疑它与我的用户目录有关,因为当我以根用户身份尝试它时,它是有效的。此外,我把我的整个主目录复制到一个临时磁盘上,然后在升级后又复制到主硬盘上(因为我想重新安装ubuntu18的“minimal”选项)。所以我开始怀疑我的主文件夹里有什么东西是罪魁祸首。在

使用-vv选项运行virtualenv只显示它在以下时间停止:Collecting setuptools。在

考虑到很多人都建议检查互联网连接,我想这可能与缓存有关。所以我尝试清空~/.cache目录:

rm -rf ~/.cache/*

挂在另一个终端窗口中的virtualenv命令立即继续,并在几秒钟内完成。在

我不知道在运行一堆应用程序的情况下以这种方式清空缓存是否被认为是勇敢的,但不管怎样,它做到了。在

更新

@t354建议只删除~/.cache/pip,使用:

^{pr2}$

我自己没有尝试过,但是如果它也能正常工作,那么它可能比删除~/.cache中的所有内容更安全

相关问题 更多 >