web-dev-qa-db-ja.com

python setup.py Egg_info mysqlclient

Python 3.6.0でpip3を使用してmysqlclientをインストールしようとしています

$ pip3 install mysqlclient
Collecting mysqlclient
  Using cached mysqlclient-1.3.10.tar.gz
    Complete output from command python setup.py Egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/private/var/folders/3k/08g3yx_12kg99kyfs989md600000gn/T/pip-build-1qv_89jc/mysqlclient/setup.py", line 17, in <module>
        metadata, options = get_config()
      File "/private/var/folders/3k/08g3yx_12kg99kyfs989md600000gn/T/pip-build-1qv_89jc/mysqlclient/setup_posix.py", line 54, in get_config
        libraries = [dequote(i[2:]) for i in libs if i.startswith('-l')]
      File "/private/var/folders/3k/08g3yx_12kg99kyfs989md600000gn/T/pip-build-1qv_89jc/mysqlclient/setup_posix.py", line 54, in <listcomp>
        libraries = [dequote(i[2:]) for i in libs if i.startswith('-l')]
      File "/private/var/folders/3k/08g3yx_12kg99kyfs989md600000gn/T/pip-build-1qv_89jc/mysqlclient/setup_posix.py", line 12, in dequote
        if s[0] in "\"'" and s[0] == s[-1]:
    IndexError: string index out of range

    ----------------------------------------
Command "python setup.py Egg_info" failed with error code 1 in /private/var/folders/3k/08g3yx_12kg99kyfs989md600000gn/T/pip-build-1qv_89jc/mysqlclient/

やった

brew install mysql-connector-c

しかし、まだこのエラーが発生する

16
Denis Ostrovsky

これは私のために働いた:

  1. brew install mysql-connector-c

  2. 編集mysql_config(検索:which mysql_config

mysql_configでこれを修正します。

# Create options 
libs="-L$pkglibdir"
libs="$libs -l "

次のようになります:

# Create options 
libs="-L$pkglibdir"
libs="$libs -lmysqlclient -lssl -lcrypto"
  1. brew info openssl
  2. そして最後に pip3 install mysqlclient
45
kvasnicaj

最初にlibmysqlclient-devをインストールすることでこれを解決しました:

Sudo apt-get install libmysqlclient-dev

それがあなたに役立つことを願っています。

8
yosbel

extensiveトラブルシューティングの後、brew install mysql-connector-cが機能しないことがわかりました。

問題は、mysql_configがインストールされていることをシステムが識別できないことに起因します(これはmysql-connector-cが本質的に行うことです)。 mysql-connector-c/Cellar/をインストールし、/usr/local/bin/ディレクトリへのシンボリックリンクを作成するHomebrewの方法(引数用にオープン)は、Pythonシンボリックリンクをたどろうとします。

この問題を解決するために、次を実行しました。

  1. brew uninstall mysql-connector-c
  2. ダウンロード/インストール MacOS X MySQL Connector/C OracleのMySQLサイトから
    • 注:.dmgをダウンロードするだけで、ここで複雑にする必要はありません...
  3. 適切な手段のためにMacOSターミナル(またはiTerm2)を再起動します
  4. which mysql_config

    • 正しいパス/usr/local/bin/mysql/bin/mysql_configが表示されるはずです
  5. virtualenvをアクティブにします(該当する場合)

  6. pip install mysqlclient

Homebrewを使用する方法は他にもありますが、これは私が見つけた最も簡単な解決策でした。

mysqlclient GitHub README.mdには、Python3のC-developerヘッダーが必要であることも記載されていることに注意してください。 mysql-connector-cにはそれらが含まれると仮定します。ただし、さらに多くの問題が発生した場合は、Xcode Developer CI Toolsをインストールして適切に測定することもできます。

xcode-select --install

これらには、アップルのCコンパイラおよびその他の開発者ユーティリティが含まれます。続きを読む こちら

5
Israel Flores

DjangoベースのWebサイトの開発中にこの問題に遭遇し、mysqlデータベースと通信するWebサイトをセットアップする必要がありました。 homebrewを使用してインストールを行ったことはありません。

AnacondaがインストールされたMacOSで開発を行っているため、Anacondaに問題があることがわかりました。詳細を知らなくても、conda install mysqlclientでmysqlclientをインストールできました

この問題が他の誰かにも役立つことを願っています。

1
andrewec

他のオプションはうまくいきませんでしたが、これはうまくいきました:

Python3の場合:

env LDFLAGS="-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib" pip3 install mysqlclient

Python2の場合:

env LDFLAGS="-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib" pip2 install mysqlclient

または

env LDFLAGS="-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib" pip install mysqlclient

0