SyntaxError: invalid token の原因と直し方0x / 0o / 0b の意味とパーミッション(755 など)との対応ImportError: cannot import name 'LombScargle' への対処site-packages)上で発生している。venv の作り方・ライブラリの入れ方は「_Learning」ページ参照。0o は8進数(Oct)、0x は16進数(hex)、0b は2進数(bInary)。Python 2 の 0777 形式は Python 3 ではエラーになるので 0o777 と書く。2to3 コマンドで機械変換すると 0777 も 0o777 に直してくれる。python3の環境でos.chmod()を含むプログラムを実行するとSyntaxError: invalid tokenエラーが出力される。
pi@raspberrypi:/home/share/gscrape $ python3 face_trim.py
File "face_trim.py", line 58
os.chmod(path + '/trim/', 0777)
^
SyntaxError: invalid token
解決方法
Python2とPython3で8進数を表す方法が変わったたため。
Python2では、先頭に"0"をつけることで8進数を表していたが、Python3では、"0o"をつける必要がある。
os.chmod(dirname, 0o755)
"0x" : 16進数(heXadecimal)
"0o" : 8進数(Oct)
LombScargle が astropy.stats に無い」こと。astropy の新しい版では LombScargle は astropy.timeseries に移っている。astropy.timeseries に変えるか、astropy を LombScargle が astropy.stats にあった頃のバージョン(4.x 系など)に下げる。pip install "astropy<5" のように範囲指定するか、pip freeze > requirements.txt で環境を記録しておくと再現しやすい。Traceback (most recent call last):
File "/home/okamoto/python/dev_algorithm.py", line 4, in <module>
from algorithm_lib import absolute_rmssd, change_rate_rmssd, compare_rmssd, compare_temp, graph, pre_calucurate, absolute_temp, change_rate_temp
File "/home/okamoto/python/algorithm_lib.py", line 3, in <module>
from hrvanalysis import remove_outliers, remove_ectopic_beats, interpolate_nan_values, get_time_domain_features
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/okamoto/python/venv/lib/python3.12/site-packages/hrvanalysis/__init__.py", line 8, in <module>
from hrvanalysis.extract_features import (get_time_domain_features, get_frequency_domain_features,
File "/home/okamoto/python/venv/lib/python3.12/site-packages/hrvanalysis/extract_features.py", line 12, in <module>
from astropy.stats import LombScargle
ImportError: cannot import name 'LombScargle' from 'astropy.stats' (/home/okamoto/python/venv/lib/python3.12/site-packages/astropy/stats/__init__.py)
/lib/python3.12/site-packages/hrvanalysis/extract_features.py
try:
from astropy.timeseries import LombScargle
except ImportError:
from astropy.stats import LombScargle
``
#### よくある質問
**Q. `SyntaxError: invalid token` はどの行で起きるか**
A. `0777` のように 0 で始まる数字を書いた行。エラーメッセージの `^` が指す位置を見て、`0o` を頭に付ける(`0o777`)と解消する。
**Q. Python 2 のコードを動かす方法はないか**
A. python2 が入っていれば動くが、サポート終了のため新規利用は避ける。`2to3` で機械変換した後、print 文や整数除算(`/` と `//`)の違いを手で直すのが定石。
**Q. pip で入れたはずのモジュールが import できない**
A. `pip` と `python3` が別の環境を指している可能性が高い。`python3 -m pip install モジュール名` の形式で入れれば、実行している python3 と必ず同じ環境に入る。
## 関連ページ
- [Python / ファイル操作(os.chmod の使い方)](/Knowledge/Python/ファイル操作)
- [Python / _Learning(venv・numpy・matplotlib の基礎)](/Knowledge/Python/_Learning)
- [CSVの読み込み(Pandas版)](/Knowledge/Python/_Learning/CSVの読み込み(Pandas版))
## 参考URL
- [Python 公式ドキュメント: 2to3 自動変換ツール](https://docs.python.org/3/library/2to3.html)
- [Python 公式ドキュメント: os.chmod](https://docs.python.org/3/library/os.html#os.chmod)
- [hrvanalysis(PyPI)](https://pypi.org/project/hrvanalysis/)
---
> 🤖 このページには**AIエージェント(ノア)による編集・加筆**が含まれます。内容の正確性は保証できないため、重要な判断は一次情報でご確認ください。