openfisca-france
openfisca-france copied to clipboard
No country package has been detected on your environment
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 :
- [X] 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.
Ce rapport ne devrait-il pas plutôt être ouvert sur Core ? Reproduis-tu le problème avec d'autres modèles ?
Je ne sais pas, le fait que la CI fonctionne rend le problème étrange...
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.
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 ?
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.
Merci, j'avais ouvert cette issue suite à https://github.com/openfisca/openfisca-france/pull/2298#issuecomment-2098311793 , je vais voir si cela gêne toujours.
Dans https://github.com/openfisca/openfisca-france/pull/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.
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
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 ?
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.
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.
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
Je vais distinguer deux choses :
- Le passage au
pyproject.toml
qui peut se faire sans Poetry, c'est l'objet de https://github.com/openfisca/openfisca-france/pull/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.
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).