7

6 から何もインポートできません。これらの行は両方ともエラーになります。

from six.moves.urllib.request import urlretrieve

-->Unresolved reference "urlretrieve"

from six.moves import cPickle as pickle

-->Unresolved reference "cPickle"

OS X 10.11.5。IntelliJ 2016.1.2、PyCharm 2016.1.3、Python 2.7.11、Six 1.10.0。

私が修正しようとしたこと(PyCharmごとに、有効なコードと他の投稿の未解決の参照エラーが表示されます):

  • Python インタープリターの切り替え
  • IntelliJ: アイデア ファイルを削除しました
  • IDE -> キャッシュの無効化 / 再起動
  • 同じソースで完全に新しいプロジェクトを作成しました
  • 切り替えられた IDE (IntelliJ -> PyCharm)
  • 検証済みの 6 つが最新です。

_

$ sudo pip install -U six
Requirement already up-to-date: six in /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/six-1.10.0-py2.7.egg

私が試したPython SDK:

Python 2.7.11 (/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7)
Python 3.5.1 (/Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5)
Python 2.7.10 (/usr/local/bin/python2.7)

何も機能しませんでした。助けてください!ありがとう。

---------- 2016 年 5 月 23 日更新 ---------------------------

コマンド ラインから「from six.moves...」インポート行を実行しても、エラーは発生しません。コマンド ラインは Python 2.7.11 を呼び出します。PyCharm も Python 2.7.11 を使用しており、PyCharm は 6 つが利用可能であることも示しています - 最初のスクリーンショットを参照してください。プロジェクトには .pyc ファイルはなく、main.py だけです。 ここに画像の説明を入力 奇妙なことに、main.py は PyCharm 内でエラーなしで実行されます。「Hello」行は印刷されます (2 番目のスクリーン ショットを参照)。 ファイルは正常に実行されます このスクリーン ショットは、設定内のプロジェクト インタープリターを示しています ここに画像の説明を入力

---------- 2016 年 5 月 24 日更新 -----------------------------

import sixコードと python シェルの両方でエラーなく動作し、実行後は 6. ファイル= /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/six-1.10.0-py2.7.egg/six.pyc. ただし、PyCharm IDE は依然として six.moves インポート行にエラーを表示します。

4

3 に答える 3

1

sixにのみインストールされる/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7ため、そのインタープリターを PyCharm/IntelliJ で使用する場合にのみ機能します

新しい仮想環境を作成する場合は、six別途インストールする必要があることに注意してください。

PyCharm/IntelliJ がこれらの警告を表示しているが、コードが実際に実行される場合 - これは PyCharm のキャッシュの問題であり、安全に無視できます - 次のキャッシュ再構築時に PyCharm がキャッシュを更新する可能性があります。

于 2016-05-21T16:54:12.967 に答える
1

この質問は、これによって回答されているようです(これを重複としてマークする方法がわかりません)。

残念ながら、「six」モジュールの動的な性質のため、このモジュールに独自の python-skeleton を実装しない限り、簡単な解決策はありません (これは単純なものではありません)。

于 2016-09-21T15:25:35.097 に答える
0

from six.moves import cPickle の代わりに import six を使用してから、six.moves.cPickle を使用できます。

わたしにはできる。

于 2016-12-13T07:41:55.877 に答える