Pythonライブラリzenlib
をsetup.py
ファイルを使用してインストールしようとすると、奇妙な問題が発生します。 setup.py
ファイルを実行すると、インポートエラーが発生します。
ImportError:Cython.Distutils`という名前のモジュールはありません
しかし、私にはそのようなモジュールがあり、pythonコマンドラインで問題なくインポートできます。このインポートエラーが発生するのはなぜですか?
この問題は、Pythonを使用するのではなく、事前にインストールした Enthought Python Distribution を使用しているという事実に関係していると思われます。 Ubuntu 12.04に付属の2.7。
背景:setup.pyを実行しようとすると、まさに次のようになります。
enwe101@enwe101-PCL:~/zenlib/src$ Sudo python setup.py install
Traceback (most recent call last):
File "setup.py", line 4, in <module>
from Cython.Distutils import build_ext
ImportError: No module named Cython.Distutils
ただし、コマンドラインからは機能します。
>>> from Cython.Distutils import build_ext
>>>
>>> from fake.package import noexist
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named fake.package
最初のインポートが機能し、2番目のインポートがエラーをスローすることに注意してください。これをsetup.pyの最初の数行と比較してください:
#from distutils.core import setup
from setuptools import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext
import os.path
Ubuntuに付属のPythonではなくEnthought pythonディストリビューションが、~/.bashrc
を編集してbash $ PATH環境変数を先頭に追加することでデフォルトで実行されることを確認しました。これを最後の行として追加します。
export PATH=/usr/local/epd/bin:$PATH
そして実際にwhich python
は/usr/local/epd/bin/python
を吐き出します。他に何を試すべきかわからないので、サイトパッケージディレクトリに移動し(/usr/local/epd/lib/python2.7/site-packages
)、完全な権限(r、w、x)を与えますCython
、Distutils
、build_ext.py
、および__init__.py
ファイルに。おそらく馬鹿げているが、何も変わらなかった。
次に何をしようか考えられません!?何か案は?
あなたのSudoは正しいPythonを取得していません。これは、UbuntuでのSudoの既知の動作です。詳細は question をご覧ください。絶対パスを使用して、Sudoが正しいpythonを呼び出すことを確認する必要があります。
Sudo /usr/local/epd/bin/python setup.py install
または、以下を実行して(bashで):
alias Sudo='Sudo env PATH=$PATH'
Sudo python setup.py install
Cythonをインストールします。
pip install cython
走る
which python
pythonシステムへのデフォルトも設定されているパスへのパスは、@ tiagoの次のメソッドに進みます。
Sudo <output of which python> setup.py install
Python3を使用する場合
Sudo apt-get install cython3
Python2を使用する場合
Sudo apt-get install cython
詳細は this で読むことができます
アドバイスを1つだけ受け取りました。virtualenvを作成します。これにより、pythonの1つのバージョンのみがあり、すべてのパッケージがローカルにインストールされます(システム全体ではありません)。
解決策の1つである必要があります。
CLI-pythonで、sysをインポートし、sys.pathの中身を確認します
その後、export PYTHONPATH=whatyougot
現代に再びこれに走りました。解決策は簡単でした:
pip uninstall cython && pip install cython
次のコマンドを実行すると、ubuntu 14.04で問題が解決しました。
Sudo apt-get install python-dev
Sudo apt-get install libusb-1.0-0-dev
Sudo apt-get install libsystemd-daemon-dev
Sudo pip install cython
このリンクは私を助けました: https://github.com/trezor/python-trezor/issues/4
それは簡単だ。
install cython
最初にパッケージ。
Pythonに組み込まれているeasy_installがアップグレードされます。