Pythonにおけるパッケージとスクリプトの名前の競合
Table of Contents
名前の競合
Pythonスクリプトの名前は、スクリプト内で使用しているパッケージの名前と同じであってはなりません。そうでないと、競合が発生します。
pip install numpy
次に、numpy.pyという名前のスクリプトを作成します。
import numpy as np
print(np.array([1, 2, 3]))
スクリプトを実行すると、エラーが発生します。
python numpy.py
# or
python -c "import numpy as np; print(np.array([1, 2, 3]))"
# Traceback (most recent call last):
# File "/home/xxx/python-sandbox/numpy.py", line 1, in <module>
# import numpy as np
# File "/home/xxx/python-sandbox/numpy.py", line 3, in <module>
# print(np.array([1, 2, 3]))
# ^^^^^^^^
# AttributeError: partially initialized module 'numpy' has no attribute 'array' (most likely due to a circular import)
スクリプトnumpy.pyは、競合を避けるためにexecute_numpy.pyのように名前を変更する必要があります。