Поведение определено в описанием JLS недостижимых операторов :
Оператор then доступен, если утверждение if-then доступно.
blockquote>Таким образом, компилятор определяет, что оператор then (
break;
) доступен, независимо от условия вif
.И немного дальше, мой удар:
Базовый оператор
for
может завершиться нормально, если по крайней мере одно из следующего верно:blockquote>
- Оператор for доступен, имеется выражение условия , и выражение условия не является постоянным выражением (§15.28) со значением true.
- Существует доступная инструкция
break
, которая выходит из инструкции for.Таким образом, for может завершиться нормально, потому что then-statement содержит
break
. Как вы заметили, это не сработает, если вы заменитеbreak
наreturn
.Объяснение объясняется в конце раздела. По существу
if
имеет специальную обработку, позволяющую создавать такие конструкции, как:if(DEBUG) { ... }
, где DEBUG может быть постоянной времени компиляции.
brew install mysql
исправил это для меня
Я знаю, что это старый, но Google получил меня здесь. Итак, скажем, решение в 2018 году для python3 на OSX.
brew install mysql-client
echo 'export PATH="/usr/local/opt/mysql-client/bin:$PATH"' >> ~/.bash_profile
source ~/.bash_profile
pip install mysqlclient
Если вы используете файл mysql dmg для установки mysql, вам нужно отредактировать ваш ~ / .bash_profile и включить его:
export DYLD_LIBRARY_PATH=/usr/local/mysql/lib:$DYLD_LIBRARY_PATH
Да, вам нужно будет установить это. Например, если вы пытаетесь установить гем mysql, вам понадобятся заголовки для библиотеки mysql. Это связано с тем, что некоторые гемы должны компилировать собственные расширения, поэтому им нужны файлы заголовков для любых сторонних библиотек, которые использует расширения.
В Mac OS X я рекомендую использовать MacPorts для управления установкой этих библиотек / заголовков.
brew install mysql-client
ЕСЛИ У ВАС ЕСТЬ ЗШ:
echo 'export PATH="/usr/local/opt/mysql-client/bin:$PATH"' >> /.zshrc
source ~/.zshrc
ELSE :
echo 'export PATH="/usr/local/opt/mysql-client/bin:$PATH"' >> /.bash_profile
source ~/.bash_profile
Теперь для самой установки:
LDFLAGS=-L<
расположение вашей папки openssl lib > pip install mysqlclient==<
версия >
например : LDFLAGS = -L / usr / local / opt / openssl / lib pip install mysqlclient == 1.3.12
Эти инструкции предназначены для Linux типа Debian. Наиболее близким к Debian для OS X является Fink . После установки и настройки вы можете сказать fink install mysql-unified-dev
, чтобы получить по существу то же самое, что и запрос libmysqlclient15-dev
в системе типа Debian или Ubuntu.
Помните, что Fink устанавливает свои пакеты в / sw
, и не все сценарии сборки умеют искать там библиотеки и заголовки. Возможно, вам придется указать собственные параметры сборки, чтобы заставить его понять это.
Более успешным может быть просто загрузка пакета MySQL 5.0 для Mac OS X . Он должен включать те же файлы разработки, что и libmysqlclient15-dev
, и в качестве бонуса поместит их в места, которые с большей вероятностью обнаружит ваш гем.