ITA
Usualmente uso conda para administrar mis entornos, pero ahora estoy en un proyecto que necesita un poco más de potencia que mi computadora portátil. Así que estoy tratando de usar las estaciones de trabajo de mi universidad que tienen nuevos Intel Xeon. Pero no tengo derechos de administrador y la estación de trabajo no tiene conda, por lo que me veo obligado a trabajar con virtualenv y pip3.
¿Cómo genero un requirements.txt
de conda que funcionará con pip3
y venv
?
conda list -e > requirements.txt
no genera un archivo compatible:
= is not a valid operator. Did you mean == ?
El conda
la salida es:
# This file may be used to create an environment using:
# $ conda create --name <env> --file <this file>
# platform: osx-64
certifi=2016.2.28=py36_0
cycler=0.10.0=py36_0
freetype=2.5.5=2
icu=54.1=0
libpng=1.6.30=1
matplotlib=2.0.2=np113py36_0
mkl=2017.0.3=0
numpy=1.13.1=py36_0
openssl=1.0.2l=0
pip=9.0.1=py36_1
pyparsing=2.2.0=py36_0
pyqt=5.6.0=py36_2
python=3.6.2=0
python-dateutil=2.6.1=py36_0
pytz=2017.2=py36_0
qt=5.6.2=2
readline=6.2=2
scikit-learn=0.19.0=np113py36_0
scipy=0.19.1=np113py36_0
setuptools=36.4.0=py36_1
sip=4.18=py36_0
six=1.10.0=py36_0
sqlite=3.13.0=0
tk=8.5.18=0
wheel=0.29.0=py36_0
xz=5.2.3=0
zlib=1.2.11=0
Pensé que simplemente cambiaría manualmente todo =
a ==
pero hay dos =
en la salida de conda. ¿Cuál cambiar? Seguramente hay una manera más fácil?
EDITAR: pip freeze > requirements.txt
da:
certifi==2016.2.28
cycler==0.10.0
matplotlib==2.0.2
matplotlib-venn==0.11.5
numpy==1.13.1
pyparsing==2.2.0
python-dateutil==2.6.1
pytz==2017.2
scikit-learn==0.19.0
scipy==0.19.1
six==1.10.0
rmwenz
Como indica el comentario en la parte superior, la salida de
conda list -e > requirements.txt
se puede utilizar para crear un conda
entorno virtual con
conda create --name <env> --file requirements.txt
pero esta salida no está en el formato correcto para pip
.
Si desea un archivo que pueda utilizar para crear un pip
entorno virtual (es decir, un requirements.txt
en el formato correcto) puede instalar pip
dentro de conda
entorno, luego use pip para crear requirements.txt
.
conda activate <env>
conda install pip
pip freeze > requirements.txt
Luego usa el resultado requirements.txt
para crear un pip
ambiente virtual:
python3 -m venv env
source env/bin/activate
pip install -r requirements.txt
Cuando probé esto, los paquetes no eran idénticos en las salidas (pip
incluía menos paquetes) pero era suficiente para configurar un entorno funcional.
Para aquellos que obtienen referencias de rutas extrañas en requisitos.txt, use:
pip list --format=freeze > requirements.txt
-
Esta es la mejor respuesta y debería ser la respuesta aceptada, porque proporciona comandos específicos para realizar/responder la pregunta SO original.
– Rich Lysakowski Doctorado
23 de marzo de 2020 a las 3:30
-
Para aquellos que siguen este hilo y obtienen referencias de rutas extrañas en
requirements.txt
usarpip list --format=freeze > requirements.txt
en cambio. Ref: stackoverflow.com/a/62886215/13095028– tnwei
5 de febrero de 2021 a las 2:17
-
@JohnnyUtah cuidado allí. La creación de un entorno totalmente vacío no incluirá
pip
y asi tu recomendacion terminaria instalando todos esos paquetes afuera el entorno de destino previsto. Además, el OP claramente está preguntando acerca de pasar a un sistema que no tiene Conda en primer lugar, de ahí el turno depip
yvenv
.– merv
12 de abril de 2021 a las 3:36
-
Ah, buen punto @merv. ¿Podría instalar explícitamente
pip
después de crear y activar el entorno Conda y antes de ejecutarpip install -r requirements.txt
?– JohnnyUtah
14 abr 2021 a las 15:48
-
Si está usando conda, la mejor opción es usar
conda env export > environment.yml
confirme su environment.yml y luegoconda env create -f environment.yml
.– Jugando con BI
3 de noviembre de 2021 a las 13:39
Pascal
Problema
En un ambiente conda con simplemente llamar
pip freeze
Producción:
ipykernel @ file:///C:/ci/ipykernel_1607454116140/work/dist/ipykernel-5.3.4-py3-none-any.whl
ipython @ file:///D:/bld/ipython_1612487184680/work
...
Formato buscado:
ipykernel==5.3.4
ipython==7.20.0
...
Solución
en un entorno conda activado tuve que usar
pip list --format=freeze
para obtener el formato correcto para generar un archivo de requisitos para las personas que prefieren usar pip con entornos virtuales.
Guardar en archivo:
pip list --format=freeze > requirements.txt
-
¡Funciona perfectamente! Solo usa
pip list --format=freeze > requirements.txt
.Para almacenar la lista de paquetes como un archivo requirements.txt en el directorio del proyecto.– Pam César
1 de junio de 2021 a las 4:02
evgeny
Después de la discusión, me gustaría mencionar que en realidad se puede ver cierta separación de pip
y conda
papeles
pip
es un administrador de paquetes estándar, hace una cosa y la hace bien. requirements.txt
puede ser generado en un entorno e instalado por pip
en un nuevo entorno.
Ahora hay conda
salida: correctamente capturas su comentario que dice ‘generamos esta lista de bibliotecas para trabajar con conda’. Tenga en cuenta que python en sí está en la lista conda y (correctamente) no en requirements.txt
. conda
replica su propia instalación, es por eso que su lista de bibliotecas es más larga y tiene python.
pip
produce una lista de paquetes que se instalaron encima de la biblioteca estándar para que el paquete que escribiste funcione. Espero que ayude a distinguir entre los dos.
También pipenv es una herramienta más nueva, que puede hacer tanto el entorno virtual como la gestión de paquetes por usted.
-
pipenv sigue siendo una herramienta sobre la base de Python, al igual que pip. No manejará los requisitos. afuera de Pitón. Para eso es conda, para manejar esa imagen más grande, vea ¿Cuál es la diferencia entre pip y conda?
– Martijn Pieters
♦19 de julio de 2018 a las 10:17
-
Si bien esta respuesta proporciona información útil adicional, no proporciona comandos reales para usar con conda y pip.
– Rich Lysakowski Doctorado
23 de marzo de 2020 a las 3:29
En caso de que alguien esté buscando generar requisitos.txt de un proyecto existente en conda, use lo siguiente
-
Ir a su entorno de proyecto
conda activate <env_name>
-
conda list
le da una lista de paquetes utilizados para el medio ambiente -
conda list -e > requirements.txt
guarde toda la información sobre los paquetes en su carpeta -
conda env export > <env_name>.yml
-
pip freeze
Como se mencionó en los comentarios anteriores, la respuesta completa correcta es:
pip list --format=freeze > requirements.txt
activa la conda env
conda activate flask-test
obtenga la ruta del conda env y cópielo
conda list
agregar la ruta copiada con lib\site-packages
y usarlo en pip con --path
opción
pip freeze --path C:\Users\username\Miniconda3\envs\flask-test\lib\site-packages > requirements.txt
en Linux la ruta es como /home/username/miniconda3/envs/flask-app/lib/python3.8/site-packages/
tensordt
Hice un script de python simple para convertir requisitos de conda.txt para pip3. Simplemente copie el código a continuación.
f = open(r"requirements.txt", "r").read()
f1 = f.split("\n")
for line in f1:
if "=" in line:
a = line.split("=")[0:-1]
print(a[0]+"==" + a[1])
luego simplemente copie la salida impresa;
Salida de muestra:
_libgcc_mutex==0.1
_openmp_mutex==4.5
blas==1.0
brotli==1.0.9
bzip2==1.0.8
puedes usar ‘pip freeze’ en tu computadora
– Eugenio
9 jun 2018 a las 19:41
Pero las salidas son diferentes, quiero decir que el comando conda tiene más paquetes que la salida de
pip freeze
.– ITA
9 jun 2018 a las 19:45
eso parece un poco extraño, pero por lo general puede editar el rewuiremrnts.txt a mano como último recurso. otra opción en pipenv, un envoltorio alrededor de pip y virtualenv
– Eugenio
9 de junio de 2018 a las 19:53
No, ninguno si está funcionando. Me parece tan extraño que esto no se puede hacer. Sí, tal vez sea poco común que las personas cambien entre administradores de entornos, pero aún así… la necesidad es concebible.
– ITA
9 junio 2018 a las 20:10
No estoy seguro, no veo una respuesta completa; en el sentido de que ha explicado lo que hacen las herramientas, pero no hay solución por lo que veo en cómo para replicar un entorno conda con éxito con virtualenv de pipenv.
– ITA
17 de junio de 2018 a las 15:11