Пакеты в пунктах, не включенных в "conda env export" - PullRequest
0 голосов
/ 09 мая 2018

Мой проект на python выполняется в виртуальной среде conda. Я устанавливаю пакеты в среде с conda install всякий раз, когда этот пакет доступен для установки таким образом, в противном случае я устанавливаю его с pip install.

Чтобы упростить установку проекта для других разработчиков, я экспортирую список пакетов, которые используются в среде conda, в файл: conda env export > conda_environment_export.yml.

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

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

Мой файл экспорта conda, каким он был несколько недель назад:

name: sensor_gateway
channels:
  - defaults
dependencies:
  - aiohttp=2.3.9=py36_0
  - async-timeout=2.0.0=py36hc3e01a3_0
  - certifi=2018.1.18=py36_0
  - chardet=3.0.4=py36h420ce6e_1
  - jinja2=2.10=py36h292fed1_0
  - markupsafe=1.0=py36h0e26971_1
  - multidict=3.3.2=py36h72bac45_0
  - pip=9.0.1=py36h226ae91_4
  - pymysql=0.7.11=py36hf59f3ba_0
  - python=3.6.4=h6538335_1
  - pytz=2018.3=py36_0
  - setuptools=38.4.0=py36_0
  - sqlalchemy=1.2.1=py36hfa6e2cd_0
  - vc=14=h0510ff6_3
  - vs2015_runtime=14.0.25123=3
  - wheel=0.30.0=py36h6c3ec14_1
  - wincertstore=0.2=py36h7fe50ca_0
  - yarl=0.14.2=py36h27d1bf2_0
  - pip:
    - aiohttp-jinja2==0.16.0
    - aiomysql==0.0.12
    - attrs==17.4.0
    - idna==2.6
    - idna-ssl==1.0.0
    - python-mimeparse==1.6.0
prefix: C:\ProgramData\Anaconda3\envs\sensor_gateway

Конда экспорт сейчас:

name: sensor_gateway
channels:
  - defaults
dependencies:
  - aiohttp=2.3.9=py36_0
  - async-timeout=2.0.0=py36hc3e01a3_0
  - certifi=2018.4.16=py36_0
  - chardet=3.0.4=py36h420ce6e_1
  - icc_rt=2017.0.4=h97af966_0
  - intel-openmp=2018.0.0=8
  - jinja2=2.10=py36h292fed1_0
  - markupsafe=1.0=py36h0e26971_1
  - mkl=2018.0.2=1
  - mkl_fft=1.0.1=py36h452e1ab_0
  - mkl_random=1.0.1=py36h9258bd6_0
  - multidict=3.3.2=py36h72bac45_0
  - numpy=1.14.2=py36h5c71026_1
  - pip=9.0.1=py36h226ae91_4
  - pymysql=0.7.11=py36hf59f3ba_0
  - python=3.6.4=h6538335_1
  - pytz=2018.3=py36_0
  - setuptools=38.4.0=py36_0
  - simplejson=3.14.0=py36hfa6e2cd_0
  - sqlalchemy=1.2.1=py36hfa6e2cd_0
  - vc=14=h0510ff6_3
  - vs2015_runtime=14.0.25123=3
  - wheel=0.30.0=py36h6c3ec14_1
  - wincertstore=0.2=py36h7fe50ca_0
  - yarl=0.14.2=py36h27d1bf2_0
prefix: C:\ProgramData\Anaconda3\envs\sensor_gateway

Я подозреваю, что обновление версии conda (4.4.10-py36_0 -> 4.5.2-py36_0) могло вызвать эту проблему в этом проекте. В другом проекте у меня та же проблема, но там я обновил pip (9.0.1-py36h226ae91_4 -> 10.0.1-py36_0). Даже после возвращения к пункту 9.0.1 проблема остается. Правильно ли мое подозрение? И что я могу сделать, чтобы исправить это снова?

UPDATE:

Единственный предложенный ответ сейчас ссылается на этот вопрос и, похоже, он не решает мою проблему:

1. На командном терминале Windows, открытом как администратор:

Вывод

where pip (where в качестве команды, эквивалентной windows для which в unix / linux):

C:\ProgramData\Anaconda3\Scripts\pip.exe
C:\Users\Sander\AppData\Local\Programs\Python\Python36\Scripts\pip.exe

pip freeze вывод:

Перечисляет все пакеты, которые я когда-либо устанавливал на моем «нормальном» питоне (= все, что установлено по умолчанию, не внутри каких-либо выделенных виртуальных сред). Список пакетов слишком длинный для включения.

2. На командном терминале Windows, открытом с правами администратора, и после выполнения activate sensor_gateway:

where pip выход:

C:\ProgramData\Anaconda3\envs\sensor_gateway\Scripts\pip.exe
C:\ProgramData\Anaconda3\Scripts\pip.exe
C:\Users\Sander\AppData\Local\Programs\Python\Python36\Scripts\pip.exe

pip freeze вывод:

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

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

Ответы [ 4 ]

0 голосов
/ 14 января 2019

Для меня это появилось только при использовании пакета conda pip 18.1_py36_0 (другие версии не пробовал). Так что я понизил pip в виртуальной среде до версии 10 через

conda install pip=10

После этого экспорт снова перечислял пакеты pip.

Также см. Этот запрос на получение conda https://github.com/conda/conda/pull/7612, который устраняет проблему с conda 4.6.2. Он также был перенесен на Конда 4.5.10. В настоящее время нет обратного порта conda 4.4.x.

0 голосов
/ 06 июня 2018

Я смог решить эту проблему, просто запустив это в командном окне с правами администратора:

activate <env-name>
conda update pip

После этого экспорт доступных пакетов в моей среде снова содержит как пакеты, установленные с conda, так и пакеты с pip.

Я подозреваю, что я мог вызвать эту проблему с экспортом пакета, потому что я следовал инструкции, которую pip дал ранее, когда выполнял установку пакета:

"Вы используете версию pip 9.0.3, однако доступна версия 10.0.1. Вам следует подумать об обновлении с помощью команды 'python -m pip install --upgrade pip'>. "

Таким образом, обновление с помощью python -m pip install --upgrade pip прервало экспорт моего пакета, но conda update pip исправило его.

0 голосов
/ 12 сентября 2018

На момент написания этого поста из-за проблемы с чтением списков пипсов от anaconda команда conda export экспортирует только пакеты, установленные через conda install packagename, и игнорирует пипы.

Вы можете попробовать переустановить ваши пакеты через conda install и посмотреть, правильно ли он генерирует файл environment.yml.

0 голосов
/ 11 мая 2018

Если вы установили pip с anaconda и использовали его для установки пакетов, то conda-env сделает это автоматически.

Таким образом, вы можете экспортировать свою среду с помощью

conda env export -n <env-name> > environment.yml

В противном случае

Пожалуйста, обратитесь к этой ссылке

...