$apiheaders = array(
'WM_SVC.NAME: Walmart Marketplace',
'WM_QOS.CORRELATION_ID: 1466113345',
'WM_SEC.TIMESTAMP:1466113345447',
'WM_SEC.AUTH_SIGNATURE: XXXXXXXXXXX'
'WM_CONSUMER.ID: XXXXXXXXXXX',
'Content-Type: application/xml',
'Accept: application/xml',
);
$curl = curl_init();
curl_setopt($curl, CURLOPT_HTTPHEADER, $apiheaders);
curl_setopt($curl, CURLOPT_URL,$return_api_host);
curl_setopt($curl, CURLOPT_VERBOSE, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
$response = curl_exec($curl);
curl_close($curl);
处的脚本尝试使用/foo/bar.py
模块运行第二个脚本/main.py
。虽然subprocess
在Windows命令提示符下与main.py
运行良好,但运行调用python main.py
的{{1}}会导致错误
bar.py
为什么main.py
的路径出现问题,我们如何解决?
〜/的Settings.ini
ConfigParser.NoSectionError: No section: 'user'
〜/富/ bar.py
settings.ini
〜/ main.py
[user]
id: helloworld
答案 0 :(得分:1)
如果假定settings.ini
与main.py
位于同一目录中,您可以从__file__
推断出其完整路径,并使用完整路径阅读设置。
<强> main.py 强>:
import os
ini_path = os.path.join(os.path.dirname(__file__), "settings.ini")
Config = ConfigParser.ConfigParser()
Config.read(ini_path)
答案 1 :(得分:0)
检查read()
方法是否返回非空列表,否则表示找不到settings.ini
。相对路径是相对于当前工作目录(运行python
的位置)解析的,而不是脚本的目录(存储bar.py
的位置)。
您应该使用appdirs.user_config_dir()
来获取放置用户配置文件的目录。不同的操作系统(如Windows,macOS,Linux发行版)可能使用不同的默认值。 appdirs
遵循适用于给定操作系统的约定。
如果您想将数据存储在与已安装的Python模块打包在一起的文件中,那么您可以使用pkgutil.get_data()
或pkg_resources.resource_string()
work even if your package is inside an archive的put get_script_dir()
function into your script。不建议手动构建路径,但如果您需要包含当前脚本的目录,则可以Python : How to access file from different directory - 它比os.path.dirname(os.path.abspath(__file__))
更通用。如果相对位置始终相同,那么您可以使用:
#!/usr/bin/env python
import os
import subprocess
import sys
main_script_dir = os.path.join(get_script_dir(), os.pardir)
subprocess.check_call([sys.executable, '-m', 'main'], cwd=main_script_dir)