Gestion des erreurs OSX MySQL-python 1.2.5 IndexError: index de chaîne hors limites

J'ai abandonné une fois, mais grâce à mes seniors au travail, mes compétences en compilation C / C ++ se sont améliorées ces derniers jours, je vais donc réessayer!

#Tout d'abord, mysql-connector par vous-même-Téléchargez et installez c
https://dev.mysql.com/downloads/connector/c/
#Je vais omettre les détails ici,Mais ça ressemble à ça. tar zxvf xxxx.tar.gz; cd mysql*; mkdir build; cd build; cmake ..; make; sudo make install

# mysql_la configuration est/usr/local/mysql/bin/Puisqu'il sera installé, mettez un lien de manière appropriée
ln -s /usr/local/mysql/bin/mysql_config /usr/local/bin/

% pip install mysql-python
Collecting mysql-python
  Using cached MySQL-python-1.2.5.zip
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/private/var/folders/9j/12cqyk6x2s5dc22x2mnlpmmw0000gn/T/pip-build-Cf6eHO/mysql-python/setup.py", line 17, in <module>
        metadata, options = get_config()
      File "setup_posix.py", line 53, in get_config
        libraries = [ dequote(i[2:]) for i in libs if i.startswith(compiler_flag("l")) ]
      File "setup_posix.py", line 8, in dequote
        if s[0] in "\"'" and s[0] == s[-1]:
    IndexError: string index out of range

#Téléchargez zip par vous-même et essayez https://pypi.python.org/pypi/MySQL-python/1.2.5
% unzip MySQL-python-1.2.5.zip; cd MySQL-python*;
% python setup.py build
Traceback (most recent call last):
  File "setup.py", line 17, in <module>
    metadata, options = get_config()
  File "./MySQL-python-1.2.5/setup_posix.py", line 53, in get_config
    libraries = [ dequote(i[2:]) for i in libs if i.startswith(compiler_flag("l")) ]
  File "./MySQL-python-1.2.5/setup_posix.py", line 8, in dequote
    if s[0] in "\"'" and s[0] == s[-1]:
IndexError: string index out of range

#Je n'ai pas vérifié les bogues et les chaînes de Python ici, utilisez donc la méthode suivante pour corriger
if s[0] in "\"'" and s[0] == s[-1]:
À
if s and s[0] in "\"'" and s[0] == s[-1]:
changer en.

#Réessayer
% python setup.py build
/usr/bin/clang -bundle -undefined dynamic_lookup -arch i386 -arch x86_64 -g build/temp.macosx-10.6-intel-2.7/_mysql.o -L/usr/local/mysql/lib -l -o build/lib.macosx-10.6-intel-2.7/_mysql.so
clang: error: no such file or directory: 'build/lib.macosx-10.6-intel-2.7/_mysql.so'
error: command '/usr/bin/clang' failed with exit status 1
#Je pensais que c'était aussi simple que ça, mais la réalité n'est pas si bonne!
#J'ai vérifié le contenu.o est fait, mais.Échec de la création

#Alors le compilez-vous vous-même?
clang -bundle -undefined dynamic_lookup -arch x86_64 -g build/temp.macosx-10.6-intel-2.7/_mysql.o -L/usr/local/mysql/lib -lmysqlclient -o build/lib.macosx-10.6-intel-2.7/_mysql.so 
# -lmysqlclient est le point,python ne lie pas exprès, le fait découvrir dynamiquement
#Pas d'erreur, oui OK

#Terminer en installant
% python setup.py install 
...
Processing dependencies for MySQL-python==1.2.5
Finished processing dependencies for MySQL-python==1.2.5

% python
Python 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 12:39:47) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import _mysql
>>> import MySQLdb
>>> ^D

:)

Recommended Posts

Gestion des erreurs OSX MySQL-python 1.2.5 IndexError: index de chaîne hors limites
Les messages d'erreur Python sont concrets et faciles à comprendre "ga" (Erreur d'index: index de liste hors limites avec l'élément [0])
Erreur divisée par 0 Gestion de ZeroDivisionError