我无法在Python函数应用程序(Azure)中使用以下内容:
subprocess.run(["scrapy"])
**为什么我需要这个来工作?**我正在使用advertools(它运行该命令,请参阅https://github.com/eliasdabbas/advertools/blob/master/advertools/spider.py)
问题是什么:
1.首先,在部署时,命令行不会将scrapy命令行可执行文件添加到路径中
1.与oryx一起部署时,还有一个问题,即oryx将错误的python解释器添加到scrapy可执行文件(#!/tmp/orxy/.../python3
)中。
我该怎么做才能尝试修复此问题:
1.添加scrapy执行到我的项目:lib/advertools/scrapy_path/scrapy
(带正确路径的Python)
1.将文件添加到我路径:
os.environ["PATH"] += os.pathsep + str(scrapy_bin_path)
结果是什么:
1.执行subprocess.run(["ls", '-la', str(scrapy_bin_path)], capture_output=True, text=True)
会传回:CompletedProcess(args=['ls', '-la', '/home/site/wwwroot/lib/advertools/scrapy_path'], returncode=0, stdout='total 0\n-rwxr-xr-x 1 root root 230 Dec 2 10:10 scrapy\n', stderr='')
因此文件存在且可执行
1.执行subprocess.run(["which", "scrapy"], capture_output=True, text=True)
会传回:CompletedProcess(args=['which', 'scrapy'], returncode=0, stdout='/home/site/wwwroot/lib/advertools/scrapy_path/scrapy\n', stderr='')
鼓励...
1.但是现在最后运行subprocess.run(["scrapy"], capture_output=True, text=True)
返回:
[Information] Traceback (most recent call last):
File "/home/site/wwwroot/lib/advertools/test.py", line 74, in exec
result_scrapy = subprocess.run(["scrapy"], capture_output=True, text=True)
File "/usr/local/lib/python3.9/subprocess.py", line 505, in run
with Popen(*popenargs, **kwargs) as process:
File "/usr/local/lib/python3.9/subprocess.py", line 951, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "/usr/local/lib/python3.9/subprocess.py", line 1821, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'scrapy'
文件未找到?!
我不明白为什么which scrapy
能找到“scrapy”,它却找不到
1条答案
按热度按时间xurqigkl1#
请检查以下故障排除步骤以解决此问题:
1.尝试创建虚拟环境〉安装Scrapy〉执行后续步骤
No such file or directory
当找不到或无法访问任何文件或目录时,就会出现此错误。我们需要提供该模块、文件或目录的绝对路径。
1.通过Scrapy运行Python脚本时,工作目录有时可能会发生更改,请尝试创建断点并从代码Angular 检查当前目录,以查找错误的根本原因。
有关
No Such File or directory: Scrapy
Python问题和AppsLoveWorld article的更多详细信息,请参阅此SO Thread。