Właśnie zainstalowałem Python 3.6.1 dla MacOS X
Kiedy próbuję uruchomić konsolę (lub cokolwiek uruchomić z Python3), pojawia się ten błąd:
AttributeError: module 'enum' has no attribute 'IntFlag'
$ /Library/Frameworks/Python.framework/Versions/3.6/bin/python3
Failed to import the site module
Traceback (most recent call last):
File "/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site.py", line 544, in <module>
main()
File "/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site.py", line 530, in main
known_paths = addusersitepackages(known_paths)
File "/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site.py", line 282, in addusersitepackages
user_site = getusersitepackages()
File "/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site.py", line 258, in getusersitepackages
user_base = getuserbase() # this will also set USER_BASE
File "/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site.py", line 248, in getuserbase
USER_BASE = get_config_var('userbase')
File "/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/sysconfig.py", line 601, in get_config_var
return get_config_vars().get(name)
File "/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/sysconfig.py", line 580, in get_config_vars
import _osx_support
File "/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/_osx_support.py", line 4, in <module>
import re
File "/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/re.py", line 142, in <module>
class RegexFlag(enum.IntFlag):
AttributeError: module 'enum' has no attribute 'IntFlag'
Klasa IntFlag istnieje w enum.py. Dlaczego więc wyrzucany jest błąd AttributeError?
python
python-3.x
enums
python-3.6
attributeerror
BryanWheelock
źródło
źródło
enum.py
w twoim katalogu roboczym?enum.py
w twoim katalogu roboczym-I
opcją ignorowania pakietów witryn i zmiennych środowiskowych i / lub z,-v
aby zobaczyć szczegółowe komunikaty oOdpowiedzi:
To dlatego, że
enum
nie jest to standardowyenum
moduł biblioteki . Prawdopodobnie maszenum34
zainstalowany pakiet .Jednym ze sposobów sprawdzenia, czy tak jest, jest inspekcja nieruchomości
enum.__file__
Od Pythona 3.6 biblioteka enum34 nie jest już zgodna z biblioteką standardową. Biblioteka jest również niepotrzebna, więc możesz ją po prostu odinstalować.
Jeśli potrzebujesz kodu do działania w wersjach Pythona zarówno <= 3.4, jak i> 3.4, możesz spróbować
enum-compat
jako wymaganie. Instaluje się tylkoenum34
dla starszych wersji Pythona bez standardowej biblioteki wyliczenia.źródło
ipython2 --> traitlets --> enum34
. (Niestetyenum34
jest zainstalowany.../2.7/site-packages/enum
nie.../2.7/site-packages/enum34
- prosząc o kłopoty.)Skipping enum34 as it is not installed
.. Używam 3.7print(enum.__file__)
mi daje to:/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/enum.py
. Czy to znaczy, że mam standardowąenum
bibliotekę, a nieenum34
? Edycja: tak,pip uninstall enum34
dał miSkipping enum34 as it is not installed.
jupyter notebook
.Nie jestem pewien, czy nadal masz ten problem. Miałem podobny problem i udało mi się go rozwiązać, po prostu wyłączając
PYTHONPATH
$ unset PYTHONPATH
źródło
Settings->Build, Execution, Deployment->Console->Python Console
. Następnie usunąłem zmienną PYTHONPATH z pola o nazwieEnvironment variables
. Uwaga: w czasie, gdy to piszę, korzystałem z PyCharm 2017.1.2.U mnie ten błąd wystąpił po zainstalowaniu komponentu gcloud app-engine-python w celu integracji z pycharm. Odinstalowanie modułu pomogło, nawet jeśli pycharm nie ładuje się teraz do silnika aplikacji.
źródło
Jeśli ktoś przychodzi tutaj z powodu tego błędu podczas uruchamiania projektu środowiska standardowego środowiska Python 3.7 z silnikiem aplikacji Google w PyCharm, wszystko, co musisz zrobić, to
Powodem jest ten link
Wydaje mi się, że kiedy tworzymy projekt w Pythonie 3.7 w PyCharm jako projekt silnika aplikacji Google, nadal próbuje zrobić to samo, co w przypadku aplikacji python2.7
źródło
gcloud app deploy
. To nie ma nic wspólnego z pycharmem.ZRZECZENIE SIĘ: Proszę @ juanpa.arrivillaga, jeśli zobaczysz tę odpowiedź, napisz własną, a ja usunę ten post.
@ juanpa.arrivillaga wspomniał powyżej :
To był problem, który napotkałem. Nie znałem wtedy modułu enum w Pythonie i nazwałem mój plik testowy
enum.py
.Ponieważ nazwa pliku to nazwa modułu, wystąpił konflikt. Więcej informacji o modułach tutaj: https://docs.python.org/2/tutorial/modules.html
źródło
Wyłączenie „Google App Engine Support” w ustawieniach pycharm rozwiązało ten problem.
źródło
Odpowiedź Håkena Lida pomogła rozwiązać mój problem (dzięki!), W moim przypadku obecny w Pythonie3.7 z uruchomionym Flaskiem w kontenerze Docker (
FROM tiangolo/uwsgi-nginx-flask:python3.7-alpine3.7
).W moim przypadku
enum34
był instalowany przez inną bibliotekę (pip install smartsheet-python-sdk
). Dla tych, którzy mają podobny problem z kontenerem Dockera , oto mój ostatni plik Dockerfile (rozebrany do odpowiednich wierszy):źródło
W przypadku, gdy musisz zachować PYTHONPATH zarówno dla python2, jak i python3, możesz napisać instrukcje aliasu, aby ustawić właściwą PYTHONPATH w swoim bash_profile:
Zakoduj na stałe zmienne PYTHONPATH2 i PYTHONPATH3 w swoim ~ / .bash_profile i dodaj na końcu następujące aliasy:
My
python
(odnosi się do python2), ponieważ częściej używam python2.źródło
Kiedy kiedykolwiek miałem ten problem:
po prostu najpierw uruchamiam polecenie:
a następnie uruchom moje żądane polecenie i odniosłem sukces.
źródło
Zainstalowanie wersji 1.1.8 enum34 działało dla mnie.
Źródło: https://github.com/python-poetry/poetry/issues/1122
źródło
pyinstaller
.Zrobiłem to za pomocą
pip install <required-library> --ignore-installed enum34
Po zainstalowaniu wymaganej biblioteki poszukaj ostrzeżeń podczas kompilacji. Otrzymałem taki błąd:
Using legacy setup.py install for future, since package 'wheel' is not installed
ERROR: pyejabberd 0.2.11 has requirement enum34==1.1.2, but you'll have enum34 1.1.10 which is incompatible.
Aby rozwiązać ten problem teraz uruchomić komendę:
pip freeze | grep enum34
. W ten sposób otrzymasz wersję zainstalowanego pliku enum34. Teraz odinstaluj gopip uninstall enum34
i zainstaluj ponownie wymaganą wersję jakopip install "enum34==1.1.20"
źródło
Mam na komputerze zainstalowane Python 2 i Python 3. Z jakiegoś dziwnego powodu mam w sys.path Pythona 3 również ścieżkę do katalogu biblioteki pakietu witryny Python2, gdy wywoływany jest moduł re. Jeśli uruchomię Python 3 i zaimportuję enum, a
print(enum.__file__)
system nie wyświetla tej ścieżki Pythona 2 do pakietów witryn. Tak więc bardzo szorstki i brudny hack polega na bezpośrednim zmodyfikowaniu modułu, w którym importowane jest wyliczenie (postępuj zgodnie ze ścieżkami śledzenia) i wstawienie następującego kodu tuż przed zaimportowaniem wyliczenia:To rozwiązało mój problem.
źródło
Nawet ja miałem ten problem podczas uruchamiania python -m grpc_tools.protoc --version Musiałem ustawić PYTHONPATH do pakietów witryn i zamknąć wszystkie okna wiersza polecenia i zadziałało. Mam nadzieję, że to pomaga użytkownikom gRPC.
źródło
Miałem ten problem w Ubuntu20.04 w jupyterlab w moim wirtualnym jądrze ENV z Python3.8 i tensorflow 2.2.0. Komunikat o błędzie to
Problem polegał na tym, że w dowiązaniu symbolicznym w / usr / bin / python wskazywał na python2. Rozwiązanie:
Mam nadzieję, że python2 wkrótce umrze! Terveisin Markus
źródło
Jeśli masz ten problem podczas uruchamiania testów w
PyCharm
, upewnij się, że drugie pole nie jest zaznaczone w konfiguracjach.źródło
Jeśli ktoś ma ten problem podczas próby uruchomienia jądra Jupyter z virtualenv, po prostu dodaj poprawne
PYTHONPATH
dokernel.json
jądra virtualenv (na przykład Python 3):źródło