簡體   English   中英

PermissionError:[Errno 1] 不允許操作:'/Users/<local_path> /venv/pyvenv.cfg'</local_path>

[英]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對我有用

https://www.bejarano.io/fixing-cron-jobs-in-mojave/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM