[英]PermissionError: [Errno 1] Operation not permitted: '/Users/<local_path>/venv/pyvenv.cfg'
我正在運行一個帶有幾個 cron 任務的 Django 應用程序。 每當我運行python manage.py crontab add
來注冊 cron 任務時,我都會在終端中收到一封“郵件”,顯示以下回溯:
Traceback (most recent call last):
File "/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.7/lib/python3.7/site.py", line 609, in <module>
main()
File "/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.7/lib/python3.7/site.py", line 592, in main
known_paths = venv(known_paths)
File "/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.7/lib/python3.7/site.py", line 510, in venv
with open(virtual_conf, encoding='utf-8') as f:
PermissionError: [Errno 1] Operation not permitted: '/Users/<local_path>/venv/pyvenv.cfg'
我在虛擬環境 venv 中運行 macOS Catalina,python 3.7.3。
我已經嘗試為 bash、crontab、終端、xcode 和 pycharm 授予完整磁盤權限。
我也嘗試安裝 python 版本 3.7.8 和 3.8.3
我在恢復模式下使用csrutil disable
禁用了系統完整性保護,並且 cron 成功運行。 但是,我不認為它是完整的解決方案。
我將應用程序 docker 化並作為 docker 容器運行。
我遇到了同樣的問題,經過幾次搜索后,我發現 cron 權限錯誤。
這就是我解決的方法:
Go 到系統偏好設置 -> 安全和隱私 - 隱私 -> 全盤訪問
單擊 + 圖標以添加項目
如果鎖顯示為已鎖定,請單擊他以使用您的用戶密碼解鎖
按 Command + Shift + G 打開一個對話框
輸入 /usr/sbin/cron 並按 Enter
搜索和 select cron 文件並單擊打開
好的,現在它應該可以工作了。
PermissionError的原因是Python虛擬環境放在用戶目錄下。 如果把虛擬環境放在系統目錄下,比如/opt,就沒有問題了。 請參見下面的示例:
$ sudo mkdir /opt/myvenv
$ cd /opt/myvenv
$ sudo python3 -m venv .venv
$ mkdir ~/workspaces/myapp
$ cd ~/workspaces/myapp
$ cat <<EOF> demo.py
> with open('/Users/username/workspaces/myapp/demo.txt', 'a+') as f:
> f.write('Hello, cron.\n')
> EOF
$ crontab -e
$ crontab -l
* * * * * /opt/myvenv/.venv/bin/python /Users/username/workspaces/myapp/demo.py >> /Users/username/workspaces/myapp/demo.log 2>&1
$ ls -al
total 24
drwxr-xr-x 5 liqiang staff 160B 6 20 09:24 .
drwxr-xr-x 136 liqiang staff 4.3K 6 20 09:18 ..
-rw-r--r-- 1 liqiang staff 0B 6 20 09:23 demo.log
-rw-r--r-- 1 liqiang staff 117B 6 20 09:23 demo.py
-rw-r--r-- 1 liqiang staff 11B 6 20 09:24 demo.txt
這個只在Big Sur
對我有用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.