我想在Microsoft Azure上的Python Web角色中使用Numpy和Pandas。
我尝试将numpy
和pandas
添加到requirements.txt
,但这没有用(使用pip来安装numpy经常导致问题,所以这是预期的)。< / p>
I followed this advice并从http://www.lfd.uci.edu/~gohlke/pythonlibs/下载numpy作为轮子,并将该文件放在Web角色的根目录中。现在requirements.txt
看起来像这样:
azure>=0.8.0
azure-storage-logging
requests_futures
numpy-1.9.3+mkl-cp34-none-win32.whl
pandas
我远程登录虚拟机并在C:\Resources\Directory\7044b9f2b424470aa191d9c178d06399.WorkerRole1.DiagnosticStore\LogFiles\ConfigureCloudService
中找到了一些日志:
Storing debug log for failure in D:\Windows\system32\config\systemprofile\pip\pip.log
pip 1.5.6 from D:\Python34\lib\site-packages (python 3.4)
Unpacking e:\approot\numpy-1.9.3+mkl-cp34-none-win32.whl
Cleaning up...
Exception:
Traceback (most recent call last):
File "D:\Python34\lib\site-packages\pip\basecommand.py", line 122, in main
status = self.run(options, args)
File "D:\Python34\lib\site-packages\pip\commands\install.py", line 278, in run
requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle)
File "D:\Python34\lib\site-packages\pip\req.py", line 1197, in prepare_files
do_download,
File "D:\Python34\lib\site-packages\pip\req.py", line 1364, in unpack_url
unpack_file_url(link, location, download_dir)
File "D:\Python34\lib\site-packages\pip\download.py", line 640, in unpack_file_url
unpack_file(from_path, location, content_type, link)
File "D:\Python34\lib\site-packages\pip\util.py", line 621, in unpack_file
unzip_file(filename, location, flatten=not filename.endswith(('.pybundle', '.whl')))
File "D:\Python34\lib\site-packages\pip\util.py", line 510, in unzip_file
fp.write(data)
OSError: [Errno 28] No space left on device
Storing debug log for failure in D:\Windows\system32\config\systemprofile\pip\pip.log
我怎样才能让Numpy工作?
答案 0 :(得分:1)
根据您的描述,您似乎在Azure Can Service上托管您的python应用程序。如果您使用Visual Studio作为IDE,我建议您可以遵循此解决方案:
您可以尝试将python虚拟环境设置为Web角色包中的python运行时,并且利用Visual Studio,我们可以轻松地在python中配置和部署云服务。
1,在Azure Cloud Service项目解决方案中,右键单击Web角色包下的 Python环境,单击添加虚拟环境。
2,如果您将虚拟环境命名为env
,VS将在您的Web角色根目录中创建名为env
的VE文件夹。将轮文件numpy-1.9.3+mkl-cp34-none-win32.whl
复制到env
文件夹中。
3,配置requirements.txt
,以完全配置pandas
和numpy
的依赖关系,这是我的requirements.txt
看起来像azure包旁边:
pandas
numpy-1.9.3+mkl-cp34-none-win32.whl
six
pytz
4,右键单击解决方案树中的虚拟环境,单击从requirements.txt安装以安装所有软件包。
5,然后将其部署到Azure
通过这种方法在我身边工作正常。如有任何疑虑,请随时告诉我。
答案 1 :(得分:0)
在我的情况下,它是由驱动器C引起的:太满了。 PC中所有进程的所有临时文件都存储在Drive C:中,因此当它已满时无法安装大包。
答案 2 :(得分:0)
我已经完成了大约3天的工作,在调试了pip代码和其他零碎之后,我的解决方案是:
iex&#34; $ env:PYPATH \ Scripts \ pip.exe install -b e:\ approot \ stuff -r requirements.txt&#34;
注意-b。
出于某种原因,Windows / Python认为它在标准临时目录中已经用完了空间:c:\ resources \ app_id .....(当时有> 200GB已满)
使用-b强制pip使用你自己的Build目录,但不会填满。
答案 3 :(得分:0)
我在安装Numpy时遇到了同样的问题。
我从此article获取的Azure Web角色的基本模板。 作为修复此错误的想法,我从Gordon's回答。
我将tmp Local Storage添加到了我的RoleProperties:
之后对ServiceDefinition.csdef中的Startup任务进行了更改。为“tempdir”添加了一个变量:
#lang typed/racket
; comment the following line for typed/racket
;(define-syntax : (syntax-rules () ((_ id type) (void))))
(: fact (-> Integer Integer))
; the rest of the file is common to both racket and typed/racket
(define (fact n) (if (zero? n) 1 (* n (fact (sub1 n)))))
最后一步。更改了“PipInstaller.ps1”以强制使用“tempdir”作为Build目录:
<Task executionContext="elevated" taskType="simple" commandLine="bin\ps.cmd
PipInstaller.ps1">
<Environment>
<Variable name="EMULATED">
<RoleInstanceValue xpath="/RoleEnvironment/Deployment/@emulated" />
</Variable>
<Variable name="TEMPDIR">
<RoleInstanceValue xpath="/RoleEnvironment/CurrentInstance/LocalResources/LocalResource[@name='tempdir']/@path" />
</Variable>
<Variable name="PYTHON2" value="off" />
</Environment>
</Task>