Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

No country package has been detected on your environment #2300

Open
1 of 4 tasks
benoit-cty opened this issue May 13, 2024 · 19 comments · May be fixed by #2375
Open
1 of 4 tasks

No country package has been detected on your environment #2300

benoit-cty opened this issue May 13, 2024 · 19 comments · May be fixed by #2375

Comments

@benoit-cty
Copy link
Contributor

Hello hello !

Je suis le fan numéro un d'OpenFisca, mais je viens de rencontrer un problème.

Qu'ai-je fait ?

Je rencontre un problème No country package has been detected on your environment. sur OpenFisca-France, même sur master.

Par contre openfisca test --country-package openfisca_france tests/impot_revenu/pfu_bareme.yaml fonctionne.

À quoi m'attendais-je ?

Les tests passent.

Que s'est-il passé en réalité ?

La commande openfisca test tests/impot_revenu/pfu_bareme.yaml retourne l'erreur : No country package has been detected on your environment.

Voici des informations qui peuvent aider à reproduire le problème :

Commandes pour reproduire :

rm -rf .venv
git switch master
git pull
python3 -m venv .venv
source .venv/bin/activate
make install
pip freeze | grep -i core
> OpenFisca-Core==41.4.5
openfisca test tests/impot_revenu/pfu_bareme.yaml

La détection faite par Core ne semble pas fonctionner, pourtant le code suivant :

from openfisca_core.scripts import detect_country_package
print("Country package Core: ", detect_country_package())

Retourne bien openfisca_france

Contexte

Je m'identifie plus en tant que :

  • Contributeur·e : je contribue à OpenFisca France.
  • Développeur·e : je crée des outils qui utilisent OpenFisca France.
  • Économiste : je réalise des simulations avec des données.
  • Mainteneur·e : j'intègre les contributions à OpenFisca France.
@MattiSG
Copy link
Member

MattiSG commented May 14, 2024

Ce rapport ne devrait-il pas plutôt être ouvert sur Core ? Reproduis-tu le problème avec d'autres modèles ?

@benoit-cty
Copy link
Contributor Author

Je ne sais pas, le fait que la CI fonctionne rend le problème étrange...

@bonjourmauko
Copy link
Member

Peut-être lié à https://github.com/openfisca/openfisca-core/issues/1281 ? Je n'ai eu le problème qu'en essayant de tester depuis une build conda.

@benoit-cty
Copy link
Contributor Author

Je n'utilise pas Conda.

Je viens de retester en Python 3.10.5 et ça ne fonctionne toujours pas :

rm -rf .venv
pyenv local 3.10.5
git switch master
git pull
python3 -m venv .venv
source .venv/bin/activate
make install
pip freeze | grep -i core
> OpenFisca-Core==41.5.5
openfisca test tests/impot_revenu/pfu_bareme.yaml
$ openfisca test tests/impot_revenu/pfu_bareme.yaml
Traceback (most recent call last):
  File "/media/2To-nvme/dev/src/LEXIMPACT/openfisca-france/.venv/bin/openfisca", line 8, in <module>
    sys.exit(main())
  File "/media/2To-nvme/dev/src/LEXIMPACT/openfisca-france/.venv/lib/python3.10/site-packages/openfisca_core/scripts/openfisca_command.py", line 158, in main
    return sys.exit(main(parser))
  File "/media/2To-nvme/dev/src/LEXIMPACT/openfisca-france/.venv/lib/python3.10/site-packages/openfisca_core/scripts/run_test.py", line 17, in main
    tax_benefit_system = build_tax_benefit_system(
  File "/media/2To-nvme/dev/src/LEXIMPACT/openfisca-france/.venv/lib/python3.10/site-packages/openfisca_core/scripts/__init__.py", line 35, in build_tax_benefit_system
    country_package_name = detect_country_package()
  File "/media/2To-nvme/dev/src/LEXIMPACT/openfisca-france/.venv/lib/python3.10/site-packages/openfisca_core/scripts/__init__.py", line 94, in detect_country_package
    raise ImportError(
ImportError: No country package has been detected on your environment. If your country package is installed but not detected, please use the --country-package option.

Je suis le seul dans ce cas ?

Mon environnement :

  • Ubuntu 24.04
  • Python 3.10.5 par Pyenv
  • Conda non installé

le make test précise le country-package openfisca test --country-package openfisca_france tests donc ça fonctionne.

Donc est-ce un bug ou est-ce que ça n'est pas censé fonctionner ?

@bonjourmauko
Copy link
Member

bonjourmauko commented Oct 18, 2024

J'arrive à reproduire l'erreur, mais je n'ai pas d'idée comment le résoudre.

Ceci arrive seulement avec pip install --editable .. Avec une installation normalle, ça fonctionne.

C'est-à-dire, pour un utilisateur normal, ça marche.

Pour un.e contributeur, non.

@benoit-cty
Copy link
Contributor Author

Merci, j'avais ouvert cette issue suite à #2298 (comment) , je vais voir si cela gêne toujours.

@benoit-cty
Copy link
Contributor Author

Dans #2369 le problème est même plus "grave" car:

openfisca test --country-package openfisca_france tests

Indique:

ModuleNotFoundError: No module named 'openfisca_france'

Alors que si l'on reprend le code de Core ça fonctionne:

❯ python
Python 3.10.5 (main, Sep  6 2024, 12:24:27) [GCC 13.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import importlib
>>> importlib.import_module("openfisca_france")
<module 'openfisca_france' from '/media/2To-nvme/dev/src/LEXIMPACT/openfisca-france/openfisca_france/__init__.py'>
>>> 

Ce n'est pas un problème de Core car le master d'OpenFisca avec la même version de Core fonctionne.

@benoit-cty
Copy link
Contributor Author

benoit-cty commented Oct 18, 2024

Ah, en retirant ceci, ça fonctionne mieux:

[tool.setuptools.packages.find]
where = ["openfisca_france"]
exclude = ["openfisca_france/assets/taxe_habitation/source"]

Savez-vous pourquoi cela a été introduit ?

EDIT:

Des tests plantes car il manque les fichiers statiques comme openfisca_france/situation_examples/couple.json

@benoit-cty
Copy link
Contributor Author

Bonjour @MattiSG, @bonjourmauko ,

J'ai résolu les problèmes, sauf pour conda : https://github.com/openfisca/openfisca-france/actions/runs/11436974461

En passant à Poetry en local cela résoud le problème de "No country package has been detected on your environment", on peut de nouveau lancer les tests de France sans préciser le TBS :

❯ poetry run openfisca test tests/test_basics.py::test_basics[scenario_arguments13]
================================================ test session starts =================================================
platform linux -- Python 3.11.3, pytest-8.3.3, pluggy-1.5.0
rootdir: /media/data/dev/src/LEXIMPACT/openfisca-france
configfile: pyproject.toml
plugins: typeguard-4.3.0
collected 1 item                                                                                                     

tests/test_basics.py .                                                                                         [100%]

================================================= 1 passed in 23.10s =================================================

Est-ce que je passe à Poetry dans cette même PR ?

@MattiSG
Copy link
Member

MattiSG commented Oct 21, 2024

Si cela résout le problème, et vu que cette bascule était souhaitée depuis longtemps, j'y suis personnellement favorable. Je ne me rends pas compte si cela pourrait avoir des conséquences négatives et si cette bascule impose à toute personne installant OpenFisca d'utiliser Poetry. Si c'est le cas, il faudra mettre à jour toute la documentation avant publication, ce qui est lourd.

@bonjourmauko
Copy link
Member

Bonjour @MattiSG, @bonjourmauko ,

J'ai résolu les problèmes, sauf pour conda : https://github.com/openfisca/openfisca-france/actions/runs/11436974461

En passant à Poetry en local cela résoud le problème de "No country package has been detected on your environment", on peut de nouveau lancer les tests de France sans préciser le TBS :

❯ poetry run openfisca test tests/test_basics.py::test_basics[scenario_arguments13]
================================================ test session starts =================================================
platform linux -- Python 3.11.3, pytest-8.3.3, pluggy-1.5.0
rootdir: /media/data/dev/src/LEXIMPACT/openfisca-france
configfile: pyproject.toml
plugins: typeguard-4.3.0
collected 1 item                                                                                                     

tests/test_basics.py .                                                                                         [100%]

================================================= 1 passed in 23.10s =================================================

Est-ce que je passe à Poetry dans cette même PR ?

Vu qu'on vient de le faire pour extension, je pense qu'on peut y aller.

Poetry n'est certes pas parfait, mais résout beaucoup de problèmes qu'on a depuis plus de 5 ans.

Concernant conda, je pense que c'est un chapitre appart.

@benjello
Copy link
Member

Il faut voir avec les gros utilisateurs d'openfisca -france.
@Lolajossipp @sylvainipp @pzuldp @guillett @openfisca/france-contrib-msa
@clallemand
Vos retours sont les bienvenus notamment pour usage de poetry au CASD

@benoit-cty
Copy link
Contributor Author

benoit-cty commented Oct 21, 2024

Je vais distinguer deux choses :

  • Le passage au pyproject.toml qui peut se faire sans Poetry, c'est l'objet de Remplace setup.py par pyproject.toml #2369 où tous les tests passent. Revues bienvenues !
  • Le passage à Poetry, qui, pour une raison inexpliquée, n'a pas le problème No country package has been detected on your environment Qui n'est pas bloquant puisque présent sur master depuis un moment. Cela sera fait dans une autre PR.

@benoit-cty benoit-cty linked a pull request Oct 23, 2024 that will close this issue
7 tasks
@sylvainipp
Copy link
Contributor

Bonjour ! Sur le CASD, on utilise leur miroir Pypi depuis qu'ils l'ont créé (sur des environnements conda, mais a priori le passage à Poetry ne devrait pas le gêner si je ne me trompe pas).

@bonjourmauko
Copy link
Member

bonjourmauko commented Oct 30, 2024

Vu que poetry utilise PyPi, et que n'est nécessaire que pour les environements de développement, j'imagine qu'il ne devrait pas y avoir d'impact sur le CASD (sauf en cas d'une erreur de config, par exemple).

@sylvainipp
Copy link
Contributor

"Poetry est nécessaire pour des environnements de développement", cela veut dire qu'il pourrait y avoir des problèmes quand on fait des pip install -e et des modifications du code hors dépendances sans l'avoir, ou c'est juste en référence au développement dans le but de modifier/optimiser les dépendances ?

@bonjourmauko
Copy link
Member

Je ne sais pas. Poetry utilise pyproject.toml, qui est un standard, donc en principe non. Mais —il y a toujours un mais— c'est une version modifiée du pyproject.toml. Il faut tester.

@sylvainipp
Copy link
Contributor

Après, poetry est lui-même sur le Pypi du CASD, donc en l'important d'abord on devrait arriver à créer des environnements de développement ensuite. Il me semble qu'au pire ce sera une étape supplémentaire. A priori pas de blocage donc de notre côté, à partir du moment où l'accès Pypi reste valide on pourra toujours faire des imports en plusieurs étapes qui devraient fonctionner.

@benoit-cty
Copy link
Contributor Author

Bonjour,
J'ai fait ajouter Poetry dans le miroir PyPi du CASD le mois dernier. Je viens de tester, il fonctionne après avoir fait un pip install poetry.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants