亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

當使用php腳本中的eval()調用腳本以及從bash腳本調用相同的函數時

當使用php腳本中的eval()調用腳本以及從bash腳本調用相同的函數時

30秒到達戰場 2022-09-06 16:54:00
我有一個可執行的python腳本,它使用pymysql庫存檔來自mysql服務器的數據。該腳本從命令行運行良好。我使用escapeshellcmd函數從php腳本調用此腳本,并且我已經讓它工作了。我還創建了一個bash腳本,我打算從crontab使用它來存檔信息。我也可以通過進行下面概述的更改來使此腳本正常工作。不知何故,我遇到了python版本和路徑問題。如果我包括#!/home/tim/anaconda3/bin/python作為python腳本的第一行,當被php腳本調用時,它可以工作(我相信使用www-data作為用戶)。它無法從 bash 腳本或命令行工作,并給出以下錯誤:  File "./signal_archive.py", line 22, in <module>    import pymysqlModuleNotFoundError: No module named 'pymysql'但是,如果 python 腳本的第一行如下所示:#!/usr/bin/python3該腳本從 bash 腳本和命令行工作,但不能從 php 腳本工作。它給出以下錯誤:  File "/home/tim/python/commodities_related/signal_archive.py", line 23, in <module>    import pandas as pdModuleNotFoundError: No module named 'pandas'這兩個軟件包都安裝在我的系統上??紤]到將腳本指向路徑會有所幫助,我將以下內容添加到python腳本中,但到目前為止沒有運氣。sys.path.append('/usr/lib/python3/dist-packages:')sys.path.append('/usr/local/lib/python3.5/dist-packages:')顯然,我錯過了一些東西。我認為是php腳本是由www-user調用的,我不知道默認路徑。bash文件由我的用戶使用.bashrc文件中指定的路徑調用。但是,我可能需要指出apache或php(www-user)才能使用Python的特定安裝。編輯 - 為了更清楚,php腳本(phpfile1.php)調用python腳本。當我從另一個在apache2上運行的php腳本(phpfile2.php)調用phpfile1.php時,我一切都可以使用#!/home/tim/anaconda3/bin/python當我從bash腳本從不同的php腳本(phpfile3.php)調用同一文件(phpfile1.php)時,它會失敗。此外,如果我使用以下命令就地運行該文件./signal_archive.py我收到錯誤,但如果我使用以下命令運行它,它的工作原理:python signal_archive.py任何想法,如果這是正確的或如何做?謝謝。
查看完整描述

1 回答

?
白衣非少年

TA貢獻1155條經驗 獲得超0個贊

我通過2個步驟修復了這個問題:


事實證明,我需要將 anaconda3 的路徑添加到我的.bash_profile文件中。


export PATH="/home/tim/anaconda3/bin:$PATH"

安裝 anaconda3 后,它會使用前面的代碼片段修改 .bashrc 文件。然而,在這種情況下,.bash_profile做出了改變。


我還修改了python文件的頂部,以使用anaconda路徑進行執行,并為特定的python包添加路徑。


#!/home/tim/anaconda3/bin/python

import sys

sys.path.insert(1, '/usr/local/lib/python3.5/dist-packages')


查看完整回答
反對 回復 2022-09-06
  • 1 回答
  • 0 關注
  • 99 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號