我打算用python來執行shell命令,實現sqoop導數據功能
腳本如下:
mysql_jdbc="jdbc:mysql://{0}:{1}/{2}?characterEncoding=utf8&autoReconnect=true"
sqoop import "-Dorg.apache.sqoop.splitter.allow_text_splitter=true" \
--connect $mysql_jdbc \
--username {3} \
--password {4} \
--table {5} \
--target-dir {7} \
--delete-target-dir \
--split-by clientid
然後報錯:sqoop:未找到命令
然後我就測試:subprocess.run("java -version",shell=True)
也是報錯:java:未找到命令
網上一頓網路,查了胡行2天啊~~~~
1、檢查/etc/profile環境變數設置沒問題
2、linux機器上直接執行java -version也正常
3、linux機器上執行python3後,執行subprocess.run("java -version",shell=True)也正常輪悔
我就奇了怪了,還擺不平你這小娘子
後來突然想到之前項目里,先生效一下profile文件,試了一下,果然臘做正有效!!!
我的親娘誒,絕望之際,解救了我~~~
至於為什麼一定要這樣,還是不解
正確腳本:
shell_str ="""
source /etc/profile;
java -version
"""
subprocess.run(shell_str, shell=True)