Много проблем при запуске скрипта python из командной строки - PullRequest
1 голос
/ 04 марта 2020

Контекст для вашего ответа: Я новичок в среде командной строки, за исключением случаев, когда речь идет о командах basi c git. Я всегда просто использовал IDE, такую ​​как PyCharm или NetBeans, для запуска программ для школьных проектов. Пожалуйста, сформулируйте свой ответ соответствующим образом.

У меня есть очень маленький python скрипт, который выводит URL:

import sys
sys.path.append(r'C:\Users\WNeill\PycharmProjects\bloomskyGrantGrove\venv\Lib\site-packages\bloomsky_api')
import bloomsky_api as bs

client = bs.BloomSkyAPIClient(api_key='pr-XXXXXXXXXX')
data = client.get_data()[0] # Dictionary formatted like JSON, if you want data besides the latest image

with open("image_URL.txt", 'w') as file:
    print(data.get('outdoor').get('image_url'), file=file)

Я сделал sys.path.append(), потому что я читал в Другой вопрос , что это решило бы мои проблемы «модуль не найден» при запуске моих сценариев из командной строки.

Ну, он сделал, вроде ... теперь он находит мой импорт, но, очевидно, мой импорт имеет импорт ...

$ py -m bloomtest.py Traceback (most recent call last): File "C:\Program Files\Python38\lib\runpy.py", line 183, in _run_module_as_main mod_name, mod_spec, code = _get_module_details(mod_name, _Error) File "C:\Program Files\Python38\lib\runpy.py", line 109, in _get_module_details __import__(pkg_name) File "C:\Users\WNeill\PycharmProjects\bloomskyGrantGrove\bloomtest.py", line 4, in <module> import bloomsky_api as bs File "C:\Users\WNeill\PycharmProjects\bloomskyGrantGrove\venv\Lib\site-packages\bloomsky_api\bloomsky_api.py", line 2, in <module> import requests ModuleNotFoundError: No module named 'requests'

Так что же делать Я делаю, чтобы сделать эту работу, когда мои зависимости имеют зависимости?

Ответы [ 2 ]

1 голос
/ 05 марта 2020

Я хочу опубликовать окончательное решение своей проблемы, на которое я наткнулся благодаря ответу DutChen18 .

Он сказал, что я должен использовать pip install для установки всех своих пакетов, и это одна вещь, которую я уже делаю. Я не знаю много о командной строке, кроме basi c git и тому подобного. Попытка сделать это снова дала мне requirement already satisfied ошибок.

Однако я использовал встроенный терминал в PyCharm: C:\Program Files\Git\bin\bash.exe, который появляется при загрузке Git. Это прекрасно работает в PyCharm, потому что он автоматически запускается в рабочем каталоге вашего проекта. Мне очень удобно, новый пользователь командной строки.

Я решил открыть Git Bash отдельно от PyCharm и снова запустить pip install. Первое, что я обнаружил, это то, что он не работал без python -m pip install, в отличие от встроенного терминала PyCharm.

Как только я понял это, я попытался python -m pip install BloomSky-API, но на этот раз это не сработало скажите, что библиотеки уже установлены. Внезапно я смог запустить свой python скрипт из командной строки.

У меня есть ZERO подсказка о том, почему это произошло или почему это работает, и я хотел бы услышать более техническое объяснение, когда у меня все работает.

1 голос
/ 04 марта 2020

Не используйте sys.path.append. Представьте, что отправляете ваш код кому-то еще, его пакеты не будут находиться по тому же пути, и они не смогут запустить вашу программу. Возможно, вы не планируете распространять свой код, но это просто плохая практика.

Вместо этого вам следует использовать pip для установки пакетов, так как я предполагаю, что вы использовали менеджер пакетов PyCharm. Я думаю, что он автоматически устанавливается с текущими версиями python (хотя не уверен, что я на Linux), и он используется так:

pip install BloomSky-API

, он автоматически получит все зависимости и положит они в нужных местах.

Я никогда раньше не использовал команду py (я пропускаю?), попробуйте использовать python bloomtest.py для ее запуска, просто чтобы быть уверенным. Вы можете получить сообщение об ошибке, сообщающее, что python - нераспознанная команда или файл, если это так, это означает, что ваш PATH настроен неправильно. Я обнаружил, что самый простой способ решить эту проблему - просто переустановить python, убедившись, что установлен флажок для добавления python в вашу PATH.

Обычно я публикую такие предложения в комментарий, если я не уверен, что он решает вашу проблему, но ответ слишком длинный, чтобы уместиться в комментарии. Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...