shuttile使おうと思ったら次のエラーが出たのでメモしておく武士。
(py3.6.0) $ sshuttle -r username@hostname 0/0
[local sudo] Password:
Failed to import the site module
Traceback (most recent call last):
File "/envs/py3.6.0/lib/python3.6/site.py", line 548, in <module>
main()
File "/envs/py3.6.0/lib/python3.6/site.py", line 530, in main
known_paths = addusersitepackages(known_paths)
File "/envs/py3.6.0/lib/python3.6/site.py", line 282, in addusersitepackages
user_site = getusersitepackages()
File "/envs/py3.6.0/lib/python3.6/site.py", line 258, in getusersitepackages
user_base = getuserbase() # this will also set USER_BASE
File "/envs/py3.6.0/lib/python3.6/site.py", line 248, in getuserbase
USER_BASE = get_config_var('userbase')
File "/envs/py3.6.0/lib/python3.6/sysconfig.py", line 601, in get_config_var
return get_config_vars().get(name)
File "/envs/py3.6.0/lib/python3.6/sysconfig.py", line 580, in get_config_vars
import _osx_support
File "/envs/py3.6.0/lib/python3.6/_osx_support.py", line 4, in <module>
import re
File "/envs/py3.6.0/lib/python3.6/re.py", line 142, in <module>
class RegexFlag(enum.IntFlag):
AttributeError: module 'enum' has no attribute 'IntFlag'
IntFlagは本当にないのか?
>>> import enum >>> enum.IntFlag <enum 'IntFlag'>
ある。となるとenum34が邪魔している的な?と言う気になるのでuninstallしてみる。
(py3.6.0) $ pip uninstall enum34 Uninstalling enum34-1.1.6: /envs/py3.6.0/lib/python3.6/site-packages/enum/LICENSE /envs/py3.6.0/lib/python3.6/site-packages/enum/README /envs/py3.6.0/lib/python3.6/site-packages/enum/__init__.py /envs/py3.6.0/lib/python3.6/site-packages/enum/__pycache__/__init__.cpython-36.pyc /envs/py3.6.0/lib/python3.6/site-packages/enum34-1.1.6.dist-info/DESCRIPTION.rst /envs/py3.6.0/lib/python3.6/site-packages/enum34-1.1.6.dist-info/INSTALLER /envs/py3.6.0/lib/python3.6/site-packages/enum34-1.1.6.dist-info/METADATA /envs/py3.6.0/lib/python3.6/site-packages/enum34-1.1.6.dist-info/RECORD /envs/py3.6.0/lib/python3.6/site-packages/enum34-1.1.6.dist-info/WHEEL /envs/py3.6.0/lib/python3.6/site-packages/enum34-1.1.6.dist-info/metadata.json /envs/py3.6.0/lib/python3.6/site-packages/enum34-1.1.6.dist-info/top_level.txt Proceed (y/n)? y Successfully uninstalled enum34-1.1.6
もう一度実行してみる。
(py3.6.0) $ sshuttle -r username@hostname 0/0 [local sudo] Password: client: Connected.
できた。enum34が邪魔していたっぽい。enum34はPython3.4で入ったenumモジュールのPython2へのバックポートなのでPython3.4以降では不要なんだけど、他のライブラリの依存関係に引きずられて入ってしまうことがある。今回はそんな感じだった。