Farama-Foundation / PettingZoo

An API standard for multi-agent reinforcement learning environments, with popular reference environments and related utilities
https://pettingzoo.farama.org
Other
2.6k stars 410 forks source link

[Bug Report] 'pip install -e .', is missing something, causing 'from pettingzoo import AECEnv' not to be available #895

Closed zbenmo closed 1 year ago

zbenmo commented 1 year ago

Describe the bug

While trying to solve this item "Reset definition retains return_info #824". I have forked-cloned and 'pip install -e .'.

I get the following, which I do not get if I install just 'pip install pettingzoo'. The PettingZoo versions seems to be the same.

Code example

from pettingzoo import AECEnv
E   ImportError: cannot import name 'AECEnv' from 'pettingzoo' (unknown location)

System info

pip install -e .

(venv) oren@DESKTOP-11JEIEO:~/projects/qwertyenv$ pip show pettingzoo Name: pettingzoo Version: 1.22.3 Summary: Gymnasium for multi-agent reinforcement learning. Home-page: Author: Author-email: Farama Foundation contact@farama.org License: MIT License Location: /home/oren/projects/qwertyenv/venv/lib/python3.8/site-packages Editable project location: /home/oren/projects/qwertyenv/PettingZoo Requires: gymnasium, numpy Required-by: qwertyenv

WSL2 Ubuntu (on Windows 11 but please don't hang to this as it is a perfect Ubuntu). Linux DESKTOP-11JEIEO 4.19.128-microsoft-standard #1 SMP Tue Jun 23 12:58:10 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

Python 3.8.10

Additional context

While trying to solve this item "Reset definition retains return_info #824"

I thought I'm smart, I'll add the parameter to the ActionWrapper, verify, git add, git commit, git push, pull request, and continue with what I'm trying to achieve, yet have issues as above.

Checklist

zbenmo commented 1 year ago

Just a thought. Maybe 'setup.cfg' was not added by mistake? 'setup.py' can be probably removed.

elliottower commented 1 year ago

Can't reproduce the error on my local machine, could you give a full example of the file you're trying to run? Usually a failed install would say module not found pettingzoo, the fact that yours says (unknown location) makes me think it's something specific to how you have things set up. Does your file happen to be named pettingzoo.py? Or AECEnv.py? From some searching it looks like the unknown location issue can happen because of conflicting names between a module you are trying to load and a file you've created.

Edit: and FYI the repo is built using pyproject.toml as a configuration file, not config.cfg. Setup.py is only used for checking that the correct version is installed.

zbenmo commented 1 year ago

from pettingzoo import AECEnv

First and only line in a jupyter lab notebook.

Python 3.8.10

pip show pettingzoo Name: pettingzoo Version: 1.22.3 Summary: Gymnasium for multi-agent reinforcement learning. Home-page: Author: Author-email: Farama Foundation contact@farama.org License: MIT License Location: /home/oren/projects/qwertyenv/venv/lib/python3.8/site-packages Editable project location: /home/oren/projects/qwertyenv/PettingZoo Requires: gymnasium, numpy Required-by: qwertyenv

As a side note for the setup.cfg. I have my own projects (a couple), I use there both pyproject.toml and setup.cfg. In the past I have used (only) setup.py (but now I need the two files pyproject.toml and setup.cfg that replace the one file setup.py from the past).

elliottower commented 1 year ago

from pettingzoo import AECEnv

First and only line in a jupyter lab notebook.

Python 3.8.10

pip show pettingzoo Name: pettingzoo Version: 1.22.3 Summary: Gymnasium for multi-agent reinforcement learning. Home-page: Author: Author-email: Farama Foundation contact@farama.org License: MIT License Location: /home/oren/projects/qwertyenv/venv/lib/python3.8/site-packages Editable project location: /home/oren/projects/qwertyenv/PettingZoo Requires: gymnasium, numpy Required-by: qwertyenv

As a side note for the setup.cfg. I have my own projects (a couple), I use there both pyproject.toml and setup.cfg. In the past I have used (only) setup.py (but now I need the two files pyproject.toml and setup.cfg that replace the one file setup.py from the past).

Not relevant to your problem but pyproject.toml is all you need generally speaking. Setup.cfg is an alternative but isn’t the standard. For personal projects I’ve found poetry to be pretty convenient for managing packages more easily as well as streamlining releasing and giving a starter template and installing faster than conda. (my two repos gobblet-rl and cathedral-rl use it if you want to see the difference) https://setuptools.pypa.io/en/latest/userguide/pyproject_config.html https://packaging.python.org/en/latest/tutorials/packaging-projects/ https://pip.pypa.io/en/stable/reference/build-system/pyproject-toml/

Other side note: jupyter doesn’t allow pygame rendering afaik so I’d recommend against using it if you want to debug things visually.

I don’t see the problem though, your original post said it works fine when you do pip install pettingzoo? The release version is stable and works fine, no need to install locally unless you’re contributing to the project (in which case you definitely want to work locally and not in jupyter). You’ve pasted pip show a few times but not the actual error you get or the full script you’re trying to run or commands you’ve run previously to install it. I just did a colab notebook last night to test something and was able to install everything fine.

I’d say if you really want to use julyter, start a new virtual env without installing things, then in your first cell call !git clone [link to pettingzoo] and next cell !pip install -e . and then paste the output of that.

zbenmo commented 1 year ago

Thank you Elliot. Followed your guidelines. The issue does not repeat. You can close it.

Can't understand the difference from what I've done and above, yet apparently there is.

Best Regards, Oren

On Wed, Mar 15, 2023 at 2:58 PM Elliot Tower @.***> wrote:

from pettingzoo import AECEnv

First and only line in a jupyter lab notebook.

Python 3.8.10

pip show pettingzoo Name: pettingzoo Version: 1.22.3 Summary: Gymnasium for multi-agent reinforcement learning. Home-page: Author: Author-email: Farama Foundation @.*** License: MIT License Location: /home/oren/projects/qwertyenv/venv/lib/python3.8/site-packages Editable project location: /home/oren/projects/qwertyenv/PettingZoo Requires: gymnasium, numpy Required-by: qwertyenv

As a side note for the setup.cfg. I have my own projects (a couple), I use there both pyproject.toml and setup.cfg. In the past I have used (only) setup.py (but now I need the two files pyproject.toml and setup.cfg that replace the one file setup.py from the past). Not relevant to your problem but pyproject.toml is all you need generally speaking. Setup.cfg is an alternative but isn’t the standard. https://setuptools.pypa.io/en/latest/userguide/pyproject_config.html https://packaging.python.org/en/latest/tutorials/packaging-projects/ https://pip.pypa.io/en/stable/reference/build-system/pyproject-toml/

Other side note: jupyter doesn’t allow pygame rendering afaik so I’d recommend against using it if you want to debug things visually.

I don’t see the problem though, your original post said it works fine when you do pip install pettingzoo? The release version is stable and works fine, no need to install locally unless you’re contributing to the project (in which case you definitely want to work locally and not in jupyter). You’ve pasted pip show a few times but not the actual error you get or the full script you’re trying to run or commands you’ve run previously to install it. I just did a colab notebook last night to test something and was able to install everything fine.

I’d say if you really want to use julyter, start a new virtual env without installing things, then in your first cell call !git clone [link to pettingzoo] and next cell !pip install -e . and then paste the output of that.

— Reply to this email directly, view it on GitHub https://github.com/Farama-Foundation/PettingZoo/issues/895#issuecomment-1470060097, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAL7U3RLXVFOHRVJXUFJOBTW4HDIJANCNFSM6AAAAAAVQGYU3A . You are receiving this because you authored the thread.Message ID: @.***>

elliottower commented 1 year ago

Thank you Elliot. Followed your guidelines. The issue does not repeat. You can close it. Can't understand the difference from what I've done and above, yet apparently there is. Best Regards, Oren --

In general making clean slate virtual envs solves a lot of problems so I’d guess that’s probably it. If you have any other questions or issues I’d recommend reaching out on the farama discord, as it’s generally easier to get fast responses and feedback there.