"No space left on device" 在 Azure Web 角色上安装 Numpy 时
"No space left on device" when installing Numpy on an Azure Web Role
我想在 Microsoft Azure 上的 Python Web 角色中使用 Numpy 和 Pandas。
我尝试将 numpy
和 pandas
添加到 requirements.txt
,但这没有用(使用 pip 安装 numpy 通常会导致问题,所以这是预料之中的)。
I followed this advice and downloaded numpy as a wheel from http://www.lfd.uci.edu/~gohlke/pythonlibs/ 并将文件放在 web 角色的根目录下。现在 requirements.txt
看起来像这样:
azure>=0.8.0
azure-storage-logging
requests_futures
numpy-1.9.3+mkl-cp34-none-win32.whl
pandas
我远程进入虚拟机并在 C:\Resources\Directory44b9f2b424470aa191d9c178d06399.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 工作?
根据您的描述,您似乎在 Azure Could Service 上托管了您的 python 应用程序。如果您使用 Visual Studio 作为您的 IDE,我建议您可以按照以下解决方案:
您可以尝试在 Web 角色包中将 python 虚拟环境设置为 python 运行时,并利用 Visual Studio 我们可以在 python 中配置和部署云服务一个轻松。
1、在你的Azure云服务项目解决方案中,右键点击你的web角色包下的Python环境,点击添加虚拟环境。
2、如果你将虚拟环境命名为env
,VS会在你的web角色根目录下创建一个名为env
的VE文件夹。将 wheel 文件 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、右击解决方案树中的虚拟环境,点击Install from requirements.txt安装所有包。
5,然后部署到 Azure
我这边用这个方法效果很好。如有任何疑问,请随时告诉我。
我的情况是C盘太满了。您PC中所有进程的所有临时文件都存储在C盘中,所以大包已满无法安装。
我已经为此工作了大约 3 天,在调试了 pip 代码和其他零碎的东西之后,我的修复是:
iex "$env:PYPATH\Scripts\pip.exe install -b e:\approot\stuff -r requirements.txt"
注意-b。
出于某种原因 Windows/Python 认为标准临时目录中 运行 空间不足:c:\resources\app_id.....(当已满 > 200GB 时)
通过使用 -b 强制 pip 使用您自己的构建目录,该目录不会填满。
好开心
我在安装 Numpy 时遇到了同样的问题。
我从这个 article 获取的 Azure Web 角色的基本模板。
作为修复此错误的想法,我从 答案中获取。
我将 tmp 本地存储添加到我的 RoleProperties:
之后对 ServiceDefinition.csdef 中的启动任务进行了更改。为 "tempdir" 添加了一个变量:
<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>
最后一步。更改 "PipInstaller.ps1" 以强制 pip 使用 "tempdir" 作为构建目录:
$tmp_dir = $env:TEMPDIR
py -m pip install -b $tmp_dir -r ..\requirements.txt
我想在 Microsoft Azure 上的 Python Web 角色中使用 Numpy 和 Pandas。
我尝试将 numpy
和 pandas
添加到 requirements.txt
,但这没有用(使用 pip 安装 numpy 通常会导致问题,所以这是预料之中的)。
I followed this advice and downloaded numpy as a wheel from http://www.lfd.uci.edu/~gohlke/pythonlibs/ 并将文件放在 web 角色的根目录下。现在 requirements.txt
看起来像这样:
azure>=0.8.0
azure-storage-logging
requests_futures
numpy-1.9.3+mkl-cp34-none-win32.whl
pandas
我远程进入虚拟机并在 C:\Resources\Directory44b9f2b424470aa191d9c178d06399.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 工作?
根据您的描述,您似乎在 Azure Could Service 上托管了您的 python 应用程序。如果您使用 Visual Studio 作为您的 IDE,我建议您可以按照以下解决方案:
您可以尝试在 Web 角色包中将 python 虚拟环境设置为 python 运行时,并利用 Visual Studio 我们可以在 python 中配置和部署云服务一个轻松。
1、在你的Azure云服务项目解决方案中,右键点击你的web角色包下的Python环境,点击添加虚拟环境。
2、如果你将虚拟环境命名为env
,VS会在你的web角色根目录下创建一个名为env
的VE文件夹。将 wheel 文件 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、右击解决方案树中的虚拟环境,点击Install from requirements.txt安装所有包。
5,然后部署到 Azure
我这边用这个方法效果很好。如有任何疑问,请随时告诉我。
我的情况是C盘太满了。您PC中所有进程的所有临时文件都存储在C盘中,所以大包已满无法安装。
我已经为此工作了大约 3 天,在调试了 pip 代码和其他零碎的东西之后,我的修复是:
iex "$env:PYPATH\Scripts\pip.exe install -b e:\approot\stuff -r requirements.txt"
注意-b。
出于某种原因 Windows/Python 认为标准临时目录中 运行 空间不足:c:\resources\app_id.....(当已满 > 200GB 时)
通过使用 -b 强制 pip 使用您自己的构建目录,该目录不会填满。
好开心
我在安装 Numpy 时遇到了同样的问题。
我从这个 article 获取的 Azure Web 角色的基本模板。
作为修复此错误的想法,我从
我将 tmp 本地存储添加到我的 RoleProperties:
之后对 ServiceDefinition.csdef 中的启动任务进行了更改。为 "tempdir" 添加了一个变量:
<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>
最后一步。更改 "PipInstaller.ps1" 以强制 pip 使用 "tempdir" 作为构建目录:
$tmp_dir = $env:TEMPDIR
py -m pip install -b $tmp_dir -r ..\requirements.txt