Python標準ライブラリの、random.pkoko該当箇所が以下の通りで、エラーが出ているところをココ
と書き入れました。
中身は分からないですが、書いてあることからすると、Pythonのバージョンが2の場合の経路に入ってしまっています。
def setstate(self, state):
"""Restore internal state from object returned by getstate()."""
version = state[0]
if version == 3:
version, internalstate, self.gauss_next = state
super().setstate(internalstate)
elif version == 2:
version, internalstate, self.gauss_next = state
# In version 2, the state was saved as signed ints, which causes
# inconsistencies between 32/64-bit systems. The state is
# really unsigned 32-bit ints, so we convert negative ints from
# version 2 to positive longs for version 3.
try:
internalstate = tuple(x % (2**32) for x in internalstate)
except ValueError as e:
raise TypeError from e # ココ
super().setstate(internalstate)
else:
raise ValueError("state with version %s passed to "
"Random.setstate() of version %s" %
(version, self.VERSION))
ところが、質問に書いてあるディレクトリ名からすると、try_random.py
を置いているディレクトリはPython3.6用の標準ライブラリらしいです。
つまりエラーは、Python3.6用の標準ライブラリのディレクトリ上でPython2系を実行していることで発生していると推測します。
こちらはmacOSですが、
% cd /Users/hoge/.pyenv/versions/3.6.1/lib/python3.6/
% /usr/bin/python2.7
Python 2.7.10 (default, Feb 7 2017, 00:08:15)
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import random
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "random.py", line 146
raise TypeError from e
^
SyntaxError: invalid syntax
と再現できました。
実行する時のカレントディレクトリとスクリプトを置くディレクトリ、および実行しているPythonコマンドの実行ファイルのありかを再度確認してください。
特に、標準ライブラリが置いてあるディレクトリにユーザが自分でスクリプトを置くことは普通はやらないでしょう。
自分が書いたスクリプトは専用にディレクトリを作る方がよいと思います。