Репликация среды Anaconda из командной строки Windows - PullRequest
2 голосов
/ 11 апреля 2019

Я хочу запустить код Python из командной строки Windows. Некоторые функции сценариев, которые я запускаю в среде Anaconda, т. Е. Из Anaconda Prompt, Spyder или Jupyter Notebook, недоступны, когда я запускаю тот же сценарий из командной строки Windows. Например, метод read.csv в Pandas может читать текстовый файл с разделителями табуляции объемом 2,8 ГБ при запуске сценария в среде Anaconda, но я получаю следующее сообщение, когда тот же сценарий запускается из командной строки Windows в среде. где я установил копию Python: «pandas.errors.ParserError: Ошибка токенизации данных. Ошибка C: недостаточно памяти». Я предполагаю, что в среде Anaconda установлен пакет для чтения больших текстовых файлов. Я попытался запустить скрипт из моего домашнего каталога, где Anaconda по умолчанию хранит мои скрипты Python, и я все еще получаю то же самое сообщение «недостаточно памяти». Я также запустил скрипт из C: [мой домашний каталог] \ AppData \ Local \ Continuum \ anaconda3, где, по-видимому, установлена ​​Anaconda, и у меня возникла та же проблема с памятью. Кто-нибудь знает, как я могу запустить скрипт Python в той же среде, что и в ноутбуках Anaconda Prompt, Spyder и Jupyter?

1 Ответ

3 голосов
/ 11 апреля 2019

Это может быть результатом использования разных интерпретаторов Python.Например, 32-разрядная версия Python в Windows получает только 2 ГБ памяти для использования.Существует вероятность, что вы можете использовать это в командной строке вместо 64-битного интерпретатора в своей записной книжке.

Сравните среды, используя пакет sys.Из командной строки попробуйте следующую команду.

python -c "from __future__ import print_function; import sys; print(sys.version); print(sys.executable)"

Я поделился примером ниже.В этом случае я запускаю эти команды изнутри Anaconda Prompt, которая устанавливается (со всеми?) Версиями Anaconda.

(base) C:\Users\my.user.name>python -c "from __future__ import print_function; import sys; print(sys.version); print(sys.executable)"
3.7.0 (default, Jun 28 2018, 08:04:48) [MSC v.1912 64 bit (AMD64)]
C:\ProgramData\Anaconda3\python.exe

(base) C:\Users\my.user.name>conda env list
# conda environments:
#
base                  *  C:\ProgramData\Anaconda3
colors                   C:\Users\my.user.name\.conda\envs\colors
someotherenv             C:\Users\my.user.name\.conda\envs\someotherenv
hellostevep              C:\Users\my.user.name\.conda\envs\hellostevep

(base) C:\Users\my.user.name>conda activate colors

(colors) C:\Users\my.user.name>python -c "from __future__ import print_function; import sys; print(sys.version); print(sys.executable)"
3.7.2 (default, Feb 21 2019, 17:35:59) [MSC v.1915 64 bit (AMD64)]
C:\Users\my.user.name\.conda\envs\colors\python.exe

Обратите внимание, что python.exe отличается в зависимости от моей среды.У вас могут быть дополнительные среды Python в вашей ОС, которые отделены от Anaconda.Например, у вас может быть настройка среды Python для Windows PowerShell.Если это так, вы можете запустить команду python -c "from __future__ import print_function; import sys; print(sys.version); print(sys.executable)" из командной строки PowerShell, а затем сравнить вывод.

Внутри блокнота Jupyter, где работает метод Pandas, попробуйте запустить аналогичный код внутри ячейки (примерниже).

import sys
print(sys.version)
print(sys.executable)

Получаете ли вы тот же вывод?

Если выходные данные идентичны между вашим ноутбуком и командной строкой, возможно, это не та проблема, с которой вы столкнулись.Если да, не могли бы вы поделиться кодом, который вы выполняете из записной книжки, а также кодом из сценария, который вы запускаете в командной строке?

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