【问题标题】:Python 2.7 and 3.5 library mix-up?Python 2.7 和 3.5 库混淆?
【发布时间】:2018-12-24 17:59:18
【问题描述】:

使用 Ubuntu 16.04。在主环境中不存在以下问题。但我正在使用 Docker,我面临以下问题。

同时拥有 python 版本 2.7(2.7.12) 和 3.5(3.5.2)。 在使用 python3.5 时,有时会出现错误,例如: …… …… 文件“/usr/lib/python2.7/urllib2.py”,第 254 行 引发 AttributeError, attr ^ SyntaxError: 无效语法

而且python2.7不能用。

$python2.7 
File "/usr/lib/python3.5/site.py", line 182
    file=sys.stderr)
        ^
SyntaxError: invalid syntax

似乎,它与 3.5 和 2.7 混淆了,给两者都带来了问题。 找了很久,还没找到解决办法。由于建议不要卸载 2.7,因此尝试“删除”3.5,但最终出现错误。我也安装了3.6。但是也不能用。

一些其他信息,以备不时之需。

$ python --version
Python 2.7.12
$ python2 --version
Python 2.7.12
$ python3 --version
Python 3.5.2

$python2.7 -m site --user-site
File "/usr/lib/python3.5/site.py", line 182
    file=sys.stderr)
        ^
SyntaxError: invalid syntax

$python3.5 -m site --user-site
/root/.local/lib/python3.5/site-packages

在 /usr/local/lib/python3.5/site-packages 下,有很多包,预装的和我后来安装的。

然而,在 /usr/local/lib/python2.7/ 下有两个文件夹,/dist-packages 和 /site-packages 都是空的。

我主要使用 pip 和 pip3.5 安装软件包。

$pip --version
pip 10.0.1 from /usr/local/lib/python3.5/dist-packages/pip (python 3.5)

$pip3 --version
pip 10.0.1 from /usr/local/lib/python3.5/dist-packages/pip (python 3.5)

$pip2 --version
File "/usr/lib/python3.5/site.py", line 182
    file=sys.stderr)
        ^
SyntaxError: invalid syntax

添加作为对那些善意建议解决方案的回应。

(1) 尝试删除 3.5 和 3.6,但都以错误告终。

尝试删除 3.5 和 3.6,但最终报错。即使试图说 3.6 与其他各种它给出相同的错误消息,

File "/usr/lib/python3.5/site.py", 
line 182
    file=sys.stderr)
        ^
SyntaxError: invalid syntax

此外,在阅读了其他帖子之后,似乎删除 python 版本可能 导致其他问题。我是 Python 新手,不确定它的环境设置 ets。


(2) 已试用此示例代码进行测试。

from sklearn import datasets
iris = datasets.load_iris()    
X = iris.data
y = iris.target    
from sklearn.cross_validation import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.5)
from sklearn.neighbors import KNeighborsClassifier
my_classifier = KNeighborsClassifier()
my_classifier.fit(X_train, y_train)
predictions = my_classifier.predict(X_test)    
from sklearn.metrics import accuracy_score
print (accuracy_score(y_test, predictions))

出现以下错误。

python3.5 iris_classifier.py 
Traceback (most recent call last):
  File "iris_classifier.py", line 1, in <module>
    from sklearn import datasets
  File "/usr/local/lib/python3.5/dist-packages/sklearn/datasets/__init__.py", line 25, in <module>
    from .mldata import fetch_mldata, mldata_filename
  File "/usr/local/lib/python3.5/dist-packages/sklearn/datasets/mldata.py", line 12, in <module>
    from urllib2 import HTTPError
  File "/usr/lib/python2.7/urllib2.py", line 254
    raise AttributeError, attr
                        ^
SyntaxError: invalid syntax

【问题讨论】:

  • 您能告诉我们您尝试运行什么以及使用哪个命令吗?

标签: python


【解决方案1】:

我有同样的问题。完全卸载 3.5,确保将其从系统环境变量中的 PATH 中删除,对我有用。

以后可以重新安装,没有问题。

【讨论】:

  • 尝试删除 3.5 和 3.6,但最终报错。即使试图说 3.6 和其他各种它给出相同的错误消息,文件“/usr/lib/python3.5/site.py”,第 182 行文件=sys.stderr) ^ SyntaxError: invalid syntax
【解决方案2】:

您可以:

  • 为您的 Python 2.7 项目和 Python 3 项目创建虚拟环境。
  • 设置 Python 别名:alias python=/usr/local/bin/python2.7
  • 如果您尝试从终端运行脚本 (.py),您还可以 指定要编译的 python 版本。 Linux Python
    • python ./hello.py:将以 Python 2.7 运行它
    • python3 hello.py:将以 Python 3.5 运行它

虽然问题可能有所不同,但这可能会有所帮助。 Two versions of python on linux. how to make 2.7 the default

【讨论】:

  • 对不起,如果我误解了你。将 2.7 或 3.5 设置为我的默认值是 python 不是我的问题。任何对我有用的东西都很好。我正在尝试一些与机器学习相关的包,所以如果它们不一次又一次地抛出异常,它们中的任何一个都可以。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-28
  • 2016-01-24
  • 2016-02-18
  • 1970-01-01
  • 1970-01-01
  • 2010-10-15
  • 2017-12-05
相关资源
最近更新 更多