Не компилируется исходник

PS H:\Projects\python\streamlink> pip install --upgrade --user virtualenv
Collecting virtualenv
  Downloading virtualenv-20.3.1-py2.py3-none-any.whl (5.7 MB)
     |████████████████████████████████| 5.7 MB 2.2 MB/s
Requirement already satisfied: six<2,>=1.9.0 in c:\users\rain\appdata\local\programs\python\python39\lib\site-packages (from virtualenv) (1.15.0)
Collecting appdirs<2,>=1.4.3
  Downloading appdirs-1.4.4-py2.py3-none-any.whl (9.6 kB)
Collecting distlib<1,>=0.3.1
  Downloading distlib-0.3.1-py2.py3-none-any.whl (335 kB)
     |████████████████████████████████| 335 kB 6.8 MB/s
Collecting filelock<4,>=3.0.0
  Downloading filelock-3.0.12-py3-none-any.whl (7.6 kB)
Installing collected packages: filelock, distlib, appdirs, virtualenv
  WARNING: The script virtualenv.exe is installed in 'C:\Users\RAIN\AppData\Roaming\Python\Python39\Scripts' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Successfully installed appdirs-1.4.4 distlib-0.3.1 filelock-3.0.12 virtualenv-20.3.1
PS H:\Projects\python\streamlink> git clone https://github.com/streamlink/streamlink.git
Cloning into 'streamlink'...
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 23474 (delta 0), reused 0 (delta 0), pack-reused 23470
Receiving objects: 100% (23474/23474), 35.23 MiB | 3.97 MiB/s, done.
Resolving deltas: 100% (15012/15012), done.
PS H:\Projects\python\streamlink> cd .\streamlink\
PS H:\Projects\python\streamlink\streamlink> virtualenv --download --verbose venv
virtualenv : Имя "virtualenv" не распознано как имя командлета, функции, файла сценария или выполняемой программы. Пров
ерьте правильность написания имени, а также наличие и правильность пути, после чего повторите попытку.
строка:1 знак:1
+ virtualenv --download --verbose venv
+ ~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (virtualenv:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

всё, понял

  WARNING: The script virtualenv.exe is installed in 'C:\Users\RAIN\AppData\Roaming\Python\Python39\Scripts' which is not on PATH.

но теперь

pip install -r dev-requirements.txt

выдаёт already satisfied

Так написано же

и

Можно либо добавить эту папку в PATH ОС (по идее установщик Питона это должен был сделать, может комп не перезагружался и используется старый PATH?), либо использовать полный путь C:\Users\RAIN\AppData\Roaming\Python\Python39\Scripts\virtualenv.

я это уже давно понял, но теперь

Это после venv\Scripts\activate? Ну так может и правда установлено всё уже и можно

socks вроде именно это устанавливает почему-то.

Так, давайте сначала.

  1. Создаём в PyCharm новый проект
  2. Открываем папку проекта в терминале и выполняем эти команды
  3. Запускаем проект в PyCharm’е и всё работает
    правильно?

Тогда в нем надо указать эту венв, или наоборот в терминале использовать ту, что PyCharm создал. Как тут на скрине Установка библиотеки tensorflow, EnvironmentError WinError 5, google.protobuf.pyext import _message ImportError: DLL load failed - #4 от пользователя AlexP

Запускать можно и в терминале

если выполнять команды в папке с проектом, то разве не она используется?

как я в терминале по нему дебаггером пройдусь?

когда я пытаюсь поменять венв, оно пишет environment location directory is not empty
объясните уже, наконец, куда потыкать, чтобы оно просто запустилось.
И где взять файл __version__?

все дебагеры работают и там

Используется та, от которой запущен

в этом экземпляре терминала.

Так что чтобы

надо запустить путь_венв_из_пайчарма\Scripts\activate.

Так это создание, для уже созданной ниже Existing environment

Это не файл, а переменная из библиотеки.

Я так не умею. Я умею в IDE.

Да, я уже понял

То есть, смысл в том, чтобы заставить PyCharm использовать тот венв, куда скачались библиотеки?
А то куда они качаются, зависит от того, где последний раз был запущен activate.bat? Так?

Еще можно просто print вывести что надо ) Я обычно так и делаю.

Да, в терминале должно быть написано какая сейчас активна.

image

Разве для этого не надо сначала пройтись по коду дебаггером и понять, какую именно переменную надо вывести?

в каком терминале?

А как PyCharm узнает, какой венв использовать?

Ну смотря что за задача, можно просто код посмотреть и понять. Дебагер же просто показывает все текущие значения, найти нужное место это не особо помогает.

у меня

в обычном cmd тоже выводит.

так в настройках интерпретатора указан же.

Это очень сильно помогает. Без этого нереально долго. Особенно на незнакомом языке. Особенно на таком, как этот ваш питон.
А мне раньше казалось, что у C/C++ сложный синтаксис.

какой командой?

Там стоит тот венв, в который скачано. Однако, не работает.

H:\Projects\python\streamlink\venv\Scripts\python.exe H:/Projects/python/streamlink/streamlink/src/streamlink_cli/__main__.py
Traceback (most recent call last):
  File "H:\Projects\python\streamlink\streamlink\src\streamlink_cli\__main__.py", line 2, in <module>
    from streamlink_cli.main import main
  File "H:\Projects\python\streamlink\streamlink_cli\main.py", line 17, in <module>
    from socks import __version__ as socks_version
ModuleNotFoundError: No module named 'socks'

после вызова activate появляется, как на скрине.

а это было?

но ведь тогда венв изменится


PS H:\Projects\python\streamlink\streamlink> pip install -e .
Obtaining file:///H:/Projects/python/streamlink/streamlink
Requirement already satisfied: requests<3.0,>=2.21.0 in c:\users\rain\appdata\local\programs\python\python39\lib\site-packages (from streamlink==2.0.0+22.gb9d0d18) (2.25.1)
Requirement already satisfied: PySocks!=1.5.7,>=1.5.6 in c:\users\rain\appdata\local\programs\python\python39\lib\site-packages (from streamlink==2.0.0+22.gb9d0d18) (1.7.1)
Collecting pycryptodome<4,>=3.4.3
  Downloading pycryptodome-3.9.9-cp39-cp39-win_amd64.whl (14.1 MB)
     |████████████████████████████████| 14.1 MB 467 kB/s
Requirement already satisfied: urllib3<1.27,>=1.21.1 in c:\users\rain\appdata\local\programs\python\python39\lib\site-packages (from requests<3.0,>=2.21.0->streamlink==2.0.0+22.gb9d0d18) (1.26.2)
Requirement already satisfied: chardet<5,>=3.0.2 in c:\users\rain\appdata\local\programs\python\python39\lib\site-packages (from requests<3.0,>=2.21.0->streamlink==2.0.0+22.gb9d0d18) (4.0.0)
Requirement already satisfied: certifi>=2017.4.17 in c:\users\rain\appdata\local\programs\python\python39\lib\site-packages (from requests<3.0,>=2.21.0->streamlink==2.0.0+22.gb9d0d18) (2020.12.5)
Requirement already satisfied: idna<3,>=2.5 in c:\users\rain\appdata\local\programs\python\python39\lib\site-packages (from requests<3.0,>=2.21.0->streamlink==2.0.0+22.gb9d0d18) (2.10)
Collecting iso-639
  Downloading iso-639-0.4.5.tar.gz (167 kB)
     |████████████████████████████████| 167 kB 595 kB/s
Collecting iso3166
  Downloading iso3166-1.0.1-py2.py3-none-any.whl (8.2 kB)
Collecting isodate
  Downloading isodate-0.6.0-py2.py3-none-any.whl (45 kB)
     |████████████████████████████████| 45 kB 404 kB/s
Requirement already satisfied: six in c:\users\rain\appdata\local\programs\python\python39\lib\site-packages (from isodate->streamlink==2.0.0+22.gb9d0d18) (1.15.0)
Collecting websocket-client
  Downloading websocket_client-0.57.0-py2.py3-none-any.whl (200 kB)
     |████████████████████████████████| 200 kB 595 kB/s
Using legacy 'setup.py install' for iso-639, since package 'wheel' is not installed.
Installing collected packages: websocket-client, pycryptodome, isodate, iso3166, iso-639, streamlink
    Running setup.py install for iso-639 ... done
  Running setup.py develop for streamlink
Successfully installed iso-639-0.4.5 iso3166-1.0.1 isodate-0.6.0 pycryptodome-3.9.9 streamlink websocket-client-0.57.0

Ну так и надо изменить на ту, что нужна.
Если просто открыть новый терминал и не вызвать activate, то никакая венв не используется.

Раз уж тут уже всё стоит глобально без венв

можно просто в PyCharm выбрать питон не из венв.
image

ееееее! Оно запустилось! Оно запустилось! :hear_no_evil:

С-ума сойти :slight_smile:
Так а что было-то?

Чтобы не ловить подобные предупреждения есть команда pip list, которая выведет на экран все установленные пакеты и их версии.

Если говорить о Си - он не очень то и сложен.
А вот Си-Плюс-Плюс - да, сложен. И сложность заключается в том что каждые очередные два плюса это год утверждения нововведений в библиотеки. И также год добавления новых библиотек если таковые были к этому году разработаны и утверждены.

Видимо это

Ну и в итоге раз всё поставилось глобально, то проще уже и запустить глобальным питоном не разбираясь с венв.

И как оно поможет?
Тут же про