您的 PYTHONPATH 指向 Python 3.x 的站点包目录,但您正在运行 Python 2.x

Posted

技术标签:

【中文标题】您的 PYTHONPATH 指向 Python 3.x 的站点包目录,但您正在运行 Python 2.x【英文标题】:Your PYTHONPATH points to a site-packages dir for Python 3.x but you are running Python 2.x 【发布时间】:2017-06-06 02:23:57 【问题描述】:

我在 macOS 10.12 上运行,我正在尝试使用以下方式安装 Django:

pip install Django==1.10.5

我收到此错误:

Your PYTHONPATH points to a site-packages dir for Python 3.x but you are running Python 2.x!
 PYTHONPATH is currently: "/usr/local/lib/python3.6/site-packages:"
 You should `unset PYTHONPATH` to fix this.

我在我的系统上安装了 Python3 和 Python2.7 以及 macOS,但我真的只想将 Python3 用于几乎所有事情。使用/配置 Python 很新,有其他人遇到过这个吗?

【问题讨论】:

如果你想使用 python3,请使用 pip3 而不是 pip。另外,考虑使用virtualenv PYTHONPATH 和 virtualenv 的介绍,djangodeployment.com/2016/11/01/virtualenv-demystified 【参考方案1】:

你的PYTHONPATH 中根本不应该有site-packages;对于适当版本的 Python,它已经在 sys.path 中,但是在 PYTHONPATH 中意味着其他版本的 Python 将尝试使用在那里找到的不兼容模块。找出你在哪里设置 PYTHONPATH (它不应该在任何默认设置中发生,所以你可能在 ~/.bashrc 或类似手动做错了),然后停止这样做。如果你想不通,unset PYTHONPATH 会删除它。

由于您想使用 Python 3,请使用 pip3 进行包管理,而不是 pip

【讨论】:

你是说只有python2使用了site-packages文件夹? @GabrielFair:不,所有版本都使用它,但它位于lib/pythonX.Y/site-packages 下,其中 X 和 Y 是特定的 Python 版本。 谢谢。那时我的只是缺少那个文件夹。【参考方案2】:

您肯定希望使用virtualenv 将您的 Django 项目与系统 Python 版本分开。 virtualenv 创建一个虚拟环境——一个专门用于你的 Django 项目的 Python 版本——所以你不需要安装任何带有系统 Python 版本的库,它用于许多其他事情。 virtualenvwrapper 使使用 virtualenv 变得容易。 pip install virtualenvwrapper 是你的朋友。安装方法如下:

# Install virtualenvwrapper with the system Python version
pip install virtualenvwrapper
# Then, add these lines to your .bashrc, with the appropriate path to Python 3
# You can find the path to Python 3 with "which python3"
# virtualenvwrapper.sh is typically in /usr/bin or /usr/local/bin 
export VIRTUALENV_PYTHON=/usr/local/bin/python3.5
source /usr/bin/virtualenvwrapper.sh

初始安装后,以下是使用 virtualenvwrapper 的方法:

# Make a virtualenv
mkvirtualenv my_project

# You're now in the environment for your project
pip install Django

# When you need to activate the virtualenv to work on your project
workon my_project

# Show the virtualenvs you've created - I use one for each Django or Python project I create
lsvirtualenv

更多内容:https://virtualenvwrapper.readthedocs.io/en/latest/

祝你好运!

【讨论】:

以上是关于您的 PYTHONPATH 指向 Python 3.x 的站点包目录,但您正在运行 Python 2.x的主要内容,如果未能解决你的问题,请参考以下文章

如何将 PYTHONPATH 设置为多个文件夹

Django 错误 - 无法导入 Django。您确定它已安装并在您的 PYTHONPATH 环境变量中可用吗?

Linux添加PYTHONPATH方法以及3种修改环境变量方法

python需要设置哪些环境变量?我只知道一个PYTHONHOME指向安装目录。

Python开发环境:启动Eclipse时检测到PYTHONPATH发生改变

如何在 Dockerfile 中添加 PYTHONPATH 的路径