Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

310
Visualizações
poesía cambia la versión de python a 3.x

De acuerdo con los documentos de poesía , la forma correcta de configurar un nuevo proyecto es con poetry new poetry-demo , sin embargo, esto crea un proyecto basado en el ahora obsoleto python2.7 creando el siguiente archivo toml:

 [tool.poetry] name = "poetry-demo" version = "0.1.0" description = "" authors = ["Harsha Goli <harshagoli@gmail.com>"] [tool.poetry.dependencies] python = "^2.7" [tool.poetry.dev-dependencies] pytest = "^4.6" [build-system] requires = ["poetry>=0.12"] build-backend = "poetry.masonry.api"

¿Cómo puedo actualizar esto a 3.7? Simplemente cambiando python = "^2.7" a python = "^3.7" da como resultado el siguiente error cuando se ejecuta la poetry install :

 [SolverProblemError] The current project's Python requirement (2.7.17) is not compatible with some of the required packages Python requirement: - zipp requires Python >=3.6 Because no versions of pytest match >=4.6,<4.6.9 || >4.6.9,<5.0 and pytest (4.6.9) depends on importlib-metadata (>=0.12), pytest (>=4.6,<5.0) requires importlib-metadata (>=0.12). And because no versions of importlib-metadata match >=0.12,<1.5.0 || >1.5.0 and importlib-metadata (1.5.0) depends on zipp (>=0.5), pytest (>=4.6,<5.0) requires zipp (>=0.5). Because zipp (3.1.0) requires Python >=3.6 and no versions of zipp match >=0.5,<3.1.0 || >3.1.0, zipp is forbidden. Thus, pytest is forbidden. So, because poetry-demo depends on pytest (^4.6), version solving failed.
over 4 years ago · Santiago Trujillo
10 Respostas
Responde à pergunta

0

Curiosamente, la poesía está fallando silenciosamente debido a la falta de un paquete en el que se basa la herramienta y continúa instalando un venv roto. Así es como lo arreglas.

 sudo apt install python3-venv poetry env remove python3 poetry install

Tuve que eliminar pytest y luego reinstalar con poetry add pytest .

EDITAR: me encontré con este problema nuevamente cuando actualicé un proyecto de python3.7 a python3.8; para esto, en lugar de instalar python3-venv , querrá instalar python3.8-venv en su lugar

over 4 years ago · Santiago Trujillo Relatório

0

Siempre que cambie las dependencias a mano en su pyproject.toml , debe tener cuidado con estos puntos:

  1. Ejecute poetry lock --no-update después. La razón de esto es que la poetry install toma la poesía poetry.lock como entrada si puede encontrar uno y no el pyproject.toml .

  2. Si cambia la versión de python y usa virtualenv en el proyecto, elimine el .venv antes de ejecutar la poetry install . La poesía no cambia la versión de python de un venv una vez que se crea, porque usa la versión de python para crear el virtualenv.

over 4 years ago · Santiago Trujillo Relatório

0

Yo tuve el mismo problema. Lo resuelvo arreglando la primera línea en el archivo /home/nordman/.poetry/bin/poetry ( nordman es mi nombre local).

Simplemente cambie #!/usr/bin/env python a #!/usr/bin/env python3

over 4 years ago · Santiago Trujillo Relatório

0

Poetry hace que sea muy fácil trabajar con diferentes versiones de Python o entornos virtuales. La forma recomendada de especificar su versión de Python de acuerdo con los documentos de Poetry es

 poetry env use /path/to/preferred/python/version

Puede obtener la ruta a su versión de Python ejecutando

 which python3.7
over 4 years ago · Santiago Trujillo Relatório

0

¡He experimentado exactamente el mismo comportamiento en mi MacBook! Entonces, para que esto sea práctico, primero, veamos cuál es el Python predeterminado para la MacBook. Estoy ejecutando macOS Big Sur 11.2.1 (20D74). En terminales:

 python --version Python 2.7.16

Con eso, instalemos la poetry . He usado el script de instalación de poetry de GitHub. El uso de este script es un método recomendado para instalar poetry (aunque diría que esta NO es la mejor idea para canalizar scripts de Internet al intérprete de python ) El script de instalación es bastante inteligente: intenta detectar qué python está disponible en el sistema:

 def _which_python(self): """Decides which python executable we'll embed in the launcher script.""" allowed_executables = ["python", "python3"] if WINDOWS: allowed_executables += ["py.exe -3", "py.exe -2"] ...

Entonces, como el Python predeterminado es 2.7.16, y eso es lo que se devuelve al llamar a python , la entrada en ~/.poetry/bin se verá así:

 #!/usr/bin/env python

¡Y aquí tienes! El python predeterminado terminará en el archivo pyproject.toml y deberá hacer un baile adicional para a) asegurarse de que python3 sea una dependencia para su proyecto; yb) que el entorno virtual utilizará python3 como intérprete de python .

Como mencionó @mfalade, puede configurar el entorno con poetry env :

 poetry env use /path/to/python3

Y también modificando el pyproject.toml con:

 ... [tool.poetry.dependencies] python = "^3.9" ...

A partir de este punto, está listo para comenzar, poetry usará python3 para crear un entorno virtual para su proyecto, la dependencia se especifica en el archivo y ... la hierba vuelve a estar verde.

Pero, ¿podemos usar python3 por defecto? Hay un hilo revelador en GitHub y otro . Y si vuelve a mirar el fragmento de código del script de instalación anterior, es posible que se pregunte por qué no verificar primero python3 y luego python, especialmente teniendo en cuenta que este es el orden exacto para la instalación de Windows. Bueno, no estás solo, yo también me pregunto ;)

No sugeriría editar el ~/.poetry/bin/poetry directamente ya que este archivo es generado por el script de instalación (entonces, ¿qué sucederá si ejecuta el script de instalación nuevamente? ¿Y otra vez?).

Realmente, esto es una molestia menor, y conociendo la herramienta es fácil solucionarlo. Sin embargo, espero que se mencione en la guía de instalación ...

De todos modos, ¡espero que ayude!

over 4 years ago · Santiago Trujillo Relatório

0

Simplemente puede usar pyenv para eso. Cree un archivo .python-version dentro de su proyecto y la poetry coincidirá con la versión exacta de Python.

 # check current python version (set up globally) ❯ pyenv version 3.9.0 (set by /Users/tomasz.zieba@showpad.com/.python-version) # create .python-version file for project ❯ pyenv local 3.9.0 # check python version again (now it's set up locally) ❯ pyenv version 3.9.0 (set by /Users/tomasz.zieba@showpad.com/Documents/myproject/.python-version) ❯ poetry lock (...) ❯ poetry run python --version Python 3.9.0
over 4 years ago · Santiago Trujillo Relatório

0

Puede cambiar en pyproject.toml y ejecutar este comando "poetry env use 3.x" que funciona para mí.

over 4 years ago · Santiago Trujillo Relatório

0

Utilizar:

 poetry env use 3.9

o

 poetry env use $(which python3.9)

no funciona por alguna razón para python 3.9. Aunque se ha establecido explícitamente el requisito de la versión en el archivo pyproject.toml , es triste que uno tenga que hacer cumplir esto manualmente.

over 4 years ago · Santiago Trujillo Relatório

0

La forma en que lo hago, y es súper efectiva: use pyenv para administrar las versiones de pyenv, y su complemento pyenv-virtualenv para administrar las versiones como entornos virtuales, luego poesía para elegir la versión de ellos automáticamente mientras administra las dependencias:

Use pyenv para instalar cualquier versión de python que desee usar:

 pyenv install -v 3.7

Cree un entorno virtual basado en la versión instalada 3.7. Necesitará el complemento pyenv-virtualenv.

 pyenv virtualenv 3.7 arshbot_3.7_virtualenv

Supongamos un proyecto llamado arshbot_proj. Trabajando en el directorio $HOME:

 mkdir ~/arshbot_proj cd ~/arshbot_proj

Usa el entorno virtual que acabamos de crear. Adjunte este proyecto. A continuación, se crea un archivo .python-version que indica arshbot_3.7_virtualenv.

 pyenv local arshbot_3.7_virtualenv

Use el inicio de poesía para crear el pyproject.toml dentro del directorio usando arshbot_3.7_virtualenv. También puede usar la poesía nueva en lugar de la poesía init para crear la estructura del proyecto junto con pyproject.toml en lugar de hacer que su proyecto sea el primero en el paso anterior. Con pyproject.toml y .python-version dentro de este directorio, la poesía elegirá automáticamente el 3.7 por cortesía de arshbot_3.7_virtualenv. Poetry también usará este entorno virtual para instalar paquetes en ~/.pyenv/versions/3.7/envs/arshbot_3.7_virtualenv/lib/python3.7/site-packages

 poetry init

Eso es. Poetry elegirá el 3.7 automáticamente cada vez que lo ejecute desde dentro de ese directorio adjunto a ese entorno virtual, con él activado. Para una versión diferente de Python, simplemente repita los pasos anteriores, reemplace 3.7 con la nueva versión. El entorno virtual aparecerá dos veces: en el directorio envs como entorno virtual, y también en el directorio versions como versión, con contenidos replicando cuando poet instala paquetes.

BONUS: Tratamos de hacerlo aún más claro utilizando un enfoque diferente, el mismo concepto, los mismos resultados. Dado que, de manera predeterminada, si no cambió PYENV_ROOT, pyenv instala todas las versiones de python en ~/.pyenv/versions: si desea que la versión del sistema (incluida con su distribución) sea parte de las versiones que puede seleccionar, use venv para imite una instalación de pyenv de una versión de python, ahora llámela system_ver en lugar de 3.7. Como ya está en el sistema, no necesitamos pyenv para descargarlo, lo copiamos en nuestro directorio de versiones, para que esté disponible para crear un entorno virtual.

 cd ~/.pyenv/versions python3 -m venv --copies system system_ver pyenv virtualenv system_ver system_ver_virtualenv

Para usarlo en su proyecto en lugar de la versión anterior 3.7:

 cd ~/arshbot_proj pyenv local system_ver_virtualenv

Poetry ahora usará cualquier versión que venga originalmente con su distribución. El --copies asegurará que venv copie los archivos en lugar de usar enlaces, por lo que puede omitirlo. Por lo general, es útil si más tarde necesita crear un archivo docker de varias etapas para el proyecto utilizando los archivos del entorno virtual.

over 4 years ago · Santiago Trujillo Relatório

0

Intenté todas las soluciones que pude encontrar, pero no pude obtener poesía para elegir la versión mejorada de Python. Finalmente encontré algo que funcionó.

tldr;

  1. Ejecute poetry config virtualenvs.in-project true para usar venvs locales
  2. Ejecute deactivate para salir de cualquier venv existente
  3. Ejecute el poetry shell para activar un nuevo venv local

Así que esto es lo que estaba viendo:

 (my-project) ~/I/my-project ❯❯❯ poetry env info Virtualenv Python: 3.9.6 Implementation: CPython Path: /Users/my-user/.local/share/virtualenvs/my-project-some-hash Valid: True System Platform: darwin OS: posix Python: /usr/local/opt/python@3.9/Frameworks/Python.framework/Versions/3.9

Intenté ejecutar poetry env remove python y obtuve un error:

 (my-project) ~/I/my-project ❯❯❯ poetry env remove python ValueError Environment "my-project-some-hash-py3.9" does not exist.

Mientras tanto, vi en alguna parte que se recomienda usar entornos virtuales locales configurando esta propiedad, así que lo hice:

poetry config virtualenvs.in-project true

Esto no resolvió mi problema, pero luego me di cuenta de que cambiar esta configuración no tendría efecto automáticamente porque ya estaba en otro entorno virtual no local (consulte la salida de poetry env info arriba).

Entonces, según los documentos , ejecuté deactivate para desactivar el entorno virtual actual.

Ahora, vi esto:

 ~/I/my-project ❯❯❯ poetry env info Virtualenv Python: 3.10.1 Implementation: CPython Path: NA System Platform: darwin OS: posix Python: /Users/my-user/.pyenv/versions/3.10.1

Ahora ejecuté el poetry shell para crear un nuevo entorno virtual y recogió la nueva configuración local de venvs:

 ~/I/my-project ❯❯❯ poetry shell Creating virtualenv my-project in /Users/my-user/projects/my-project/.venv Spawning shell within /Users/my-user/projects/my-project/.venv

¡Y finalmente, vi la versión mejorada de Python que esperaba!

 (.venv) ~/I/my-project ❯❯❯ poetry run python -V Python 3.10.1

Actualización: después de hacer todo lo anterior, ¡me di cuenta de que el poetry env use funciona bien!

 (.venv) ~/I/my-project ❯❯❯ python -V Python 3.10.1 (.venv) ~/I/my-project ❯❯❯ poetry env use 3.9.6 Recreating virtualenv my-project in /Users/my-user/projects/my-project/.venv Using virtualenv: /Users/my-user/projects/my-project/.venv (.venv) ~/I/my-project ❯❯❯ python -V Python 3.9.6
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda