Python正在忽略子进程

Python正在忽略子进程,python,apache,flask,subprocess,Python,Apache,Flask,Subprocess,我有一个flask应用程序,用户上传一个文件并输入文本,然后将文本传输回flask应用程序,并用于为“适当”程序执行linux命令 以下是相关代码: repoName = request.form['repoName'] completePath = packageDir + filename subprocess.call(["aptly", "repo", "add", repoName, completePath]) 当我返回repoName或completePath时,它返回正确的信

我有一个flask应用程序,用户上传一个文件并输入文本,然后将文本传输回flask应用程序,并用于为“适当”程序执行linux命令

以下是相关代码:

repoName = request.form['repoName']
completePath = packageDir + filename

subprocess.call(["aptly", "repo", "add", repoName, completePath])
当我返回
repoName
completePath
时,它返回正确的信息,但是subprocess.call被完全忽略,我不知道为什么。没有错误/回溯,除了apache从
命令中恰当地返回一个关于正确使用的日志外,如下所示:

Usage: aptly repo add <name> <package file.deb>|<directory> ...

aptly repo add - add packages to local repository


Options:
  -architectures="": list of architectures to consider during (comma-separated), default         to all available
  -config="": location of configuration file (default locations are /etc/aptly.conf, ~/.aptly.conf)
  -dep-follow-all-variants=false: when processing dependencies, follow a & b if depdency is 'a|b'
  -dep-follow-recommends=false: when processing dependencies, follow Recommends
  -dep-follow-source=false: when processing dependencies, follow from binary to Source packages
  -dep-follow-suggests=false: when processing dependencies, follow Suggests
  -remove-files=false: remove files that have been imported successfully into repository

出于某种原因,这很好…

您可以打印
completePath
的值吗。也许你需要使用
os.path.join(packageDir,filename)
来确保使用了正确的路径分隔符。是的,在packageDir上这样做,使用packageDir+filename会给我“/var/www/aptlyapp/app/tmp/vlc_2.0.3-5_amd64.deb”所以我不认为这是问题。在调用子流程之前,我通常会记录完整的命令。它通常有助于调试。什么是完整的命令<代码>'.join([“恰当”、“repo”、“add”、repoName、completePath])
完整命令是“恰当地repo add repoName completePath”或恰当地repo add“name”“file”。你说的.join是什么意思?只要有可以在终端中使用的实际字符串。联接将使用“”从列表中创建字符串,并在每个列表项之间使用分隔符。
Python 2.7.3 (default, Mar 13 2014, 11:03:55) 
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> repoName = "FSW"
>>> import subprocess
>>> subprocess.check_output(["aptly", "repo", "show", repoName]) 
'Name: FSW\nComment: \nDefault Distribution: \nDefault Component: main\nNumber of packages: 0\n'
>>> subprocess.call(["aptly", "repo", "show", repoName])
Name: FSW
Comment: 
Default Distribution: 
Default Component: main
Number of packages: 0
0
>>> package="/var/www/aptlyapp/app/tmp/vlc_2.0.3-5_amd64.deb"
>>> subprocess.check_output(["aptly", "repo", "add", repoName, package])
'Loading packages...\n[+] vlc_2.0.3-5_amd64 added\n'
>>>