【发布时间】:2019-06-12 04:09:16
【问题描述】:
在尝试为 python 创建虚拟环境时,我不断收到以下错误。在我看来,virtualenv/pip 默认使用 python 2,而不是在构建环境时。 不该环境是 为 python2 制作的,但它是 由制作的蟒蛇2。我认为这是问题所在,感谢任何帮助。
[brad@reason Attack_Analysis]$ virtualenv -p /usr/local/bin/python3.7 venv
Running virtualenv with interpreter /usr/local/bin/python3.7
Using base prefix '/usr/local'
New python executable in /home/brad/Development/Attack_Analysis/venv/bin/python3.7
Also creating executable in /home/brad/Development/Attack_Analysis/venv/bin/python
Installing setuptools, pip, wheel...
Complete output from command /home/brad/Developme...s/venv/bin/python3.7 - setuptools pip wheel:
Traceback (most recent call last):
File "<stdin>", line 8, in <module>
File "/home/brad/.local/lib/python2.7/site-packages/virtualenv_support/pip-18.1-py2.py3-none-any.whl/pip/_internal/__init__.py", line 40, in <module>
File "/home/brad/.local/lib/python2.7/site-packages/virtualenv_support/pip-18.1-py2.py3-none-any.whl/pip/_internal/cli/autocompletion.py", line 8, in <module>
File "/home/brad/.local/lib/python2.7/site-packages/virtualenv_support/pip-18.1-py2.py3-none-any.whl/pip/_internal/cli/main_parser.py", line 12, in <module>
File "/home/brad/.local/lib/python2.7/site-packages/virtualenv_support/pip-18.1-py2.py3-none-any.whl/pip/_internal/commands/__init__.py", line 6, in <module>
File "/home/brad/.local/lib/python2.7/site-packages/virtualenv_support/pip-18.1-py2.py3-none-any.whl/pip/_internal/commands/completion.py", line 6, in <module>
File "/home/brad/.local/lib/python2.7/site-packages/virtualenv_support/pip-18.1-py2.py3-none-any.whl/pip/_internal/cli/base_command.py", line 18, in <module>
File "/home/brad/.local/lib/python2.7/site-packages/virtualenv_support/pip-18.1-py2.py3-none-any.whl/pip/_internal/download.py", line 38, in <module>
File "/home/brad/.local/lib/python2.7/site-packages/virtualenv_support/pip-18.1-py2.py3-none-any.whl/pip/_internal/utils/glibc.py", line 3, in <module>
File "/usr/local/lib/python3.7/ctypes/__init__.py", line 7, in <module>
from _ctypes import Union, Structure, Array
ModuleNotFoundError: No module named '_ctypes'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<stdin>", line 11, in <module>
ImportError: cannot import name 'main' from 'pip' (/home/brad/.local/lib/python2.7/site-packages/virtualenv_support/pip-18.1-py2.py3-none-any.whl/pip/__init__.py)
----------------------------------------
...Installing setuptools, pip, wheel...done.
Traceback (most recent call last):
File "/home/brad/.local/lib/python2.7/site-packages/virtualenv.py", line 2438, in <module>
main()
File "/home/brad/.local/lib/python2.7/site-packages/virtualenv.py", line 768, in main
symlink=options.symlink,
File "/home/brad/.local/lib/python2.7/site-packages/virtualenv.py", line 1030, in create_environment
install_wheel(to_install, py_executable, search_dirs, download=download)
File "/home/brad/.local/lib/python2.7/site-packages/virtualenv.py", line 983, in install_wheel
call_subprocess(cmd, show_stdout=False, extra_env=env, stdin=script)
File "/home/brad/.local/lib/python2.7/site-packages/virtualenv.py", line 861, in call_subprocess
raise OSError("Command {} failed with error code {}".format(cmd_desc, proc.returncode))
OSError: Command /home/brad/Developme...s/venv/bin/python3.7 - setuptools pip wheel failed with error code 1
我的 vitualenv 是最新的
[brad@reason Attack_Analysis]$ virtualenv --version
16.2.0
我的 pip 已更新,但它似乎适用于 python 2,而不是 3。如何让它适用于 python 3?我在 redhat 7.5 上通过 make install 安装。
[brad@reason Attack_Analysis]$ pip --version
pip 18.1 from /usr/lib/python2.7/site-packages/pip (python 2.7)
在使用pip3的时候,好像发现没有root,但是没有root,所以我的pip3已经过时了。当我需要 root 来执行此操作并遇到此问题时,不确定如何更新它。
[brad@reason ~]$ pip3 --version
pip 9.0.3 from /usr/local/lib/python3.6/site-packages (python 3.6)
[brad@reason ~]$ sudo pip3 install --upgrade pip
[sudo] password for brad:
sudo: pip3: command not found
我的 PYTHONPATH 是空的。应该是吗?我不认为我以前更改过这个,不确定这是否是一个问题。
[brad@reason ~]$ echo $PYTHONPATH
[brad@reason ~]$
【问题讨论】:
-
不确定错误,但您可以尝试 pip3 而不是 pip
-
echo $PYTHONPATH -
"[brad@reason ~]$ echo $PYTHONPATH" 返回一个空行,我认为这是错误的,应该是什么?
-
附带说明,我建议使用
pipenv而不是virtualenv。这是当今事实上的标准。 Python.org 本身在其管理应用程序依赖项的指南中使用pipenv:packaging.python.org/tutorials/managing-dependencies -
我最终使用了 pipenv,并且能够让一切正常工作。我觉得我应该能够使用 virtualenv,因为我喜欢它。我不喜欢 pipenv 将我的环境文件放在哪里,我喜欢 virtualenv 在提示符中清楚地显示我在环境中。无论如何, pipenv 确实有效,这是最重要的。感谢您的帮助@JChris。
标签: python-3.x python-2.7 pip virtualenv