无法使用虚拟环境在 Windows Ubuntu WSL 中启动 Scrapy 项目

Failing to start a Scrapy project within Windows Ubuntu WSL using virtual environment

我是 Scrapy 的新手,发现这个错误让我很困惑。我在 Windows 机器上工作,并使用 Ubuntu 子系统 (WSL) 来完成我所有的开发工作。我已经创建了一个虚拟环境并尝试开始学习Scrapy,但是,每当我在虚拟环境中尝试创建一个新项目时,就会出现以下错误并且无法成功创建文件。

OS: Windows 10

环境:Windows10 - WSL Ubuntu20.04.1

Python: Python 3.8.5

重现问题:

python3 -m venv /Directory/
source /Directory/bin/activate
(venv) pip install scrapy
(venv) scrapy startproject /directory/

错误信息:

Traceback (most recent call last):
  File "/mnt/c/Users/.../bin/scrapy", line 10, in <module>
    sys.exit(execute())
  File "/mnt/c/Users/.../lib/python3.8/site-packages/scrapy/cmdline.py", line 145, in 
execute
    _run_print_help(parser, _run_command, cmd, args, opts)
  File "/mnt/c/Users/.../lib/python3.8/site-packages/scrapy/cmdline.py", line 100, in 
_run_print_help
    func(*a, **kw)
  File "/mnt/c/Users/.../lib/python3.8/site-packages/scrapy/cmdline.py", line 153, in 
_run_command
    cmd.run(args, opts)
  File "/mnt/c/Users/.../lib/python3.8/site-packages/scrapy/commands/startproject.py", line 110, in run
    self._copytree(self.templates_dir, abspath(project_dir))
  File "/mnt/c/Users/.../lib/python3.8/site-packages/scrapy/commands/startproject.py", line 83, in _copytree
    self._copytree(srcname, dstname)
  File "/mnt/c/Users/.../lib/python3.8/site-packages/scrapy/commands/startproject.py", line 83, in _copytree
    self._copytree(srcname, dstname)
  File "/mnt/c/Users/.../lib/python3.8/site-packages/scrapy/commands/startproject.py", line 88, in _copytree
    copystat(src, dst)
  File "/usr/lib/python3.8/shutil.py", line 376, in copystat
    _copyxattr(src, dst, follow_symlinks=follow)
  File "/usr/lib/python3.8/shutil.py", line 326, in _copyxattr
    os.setxattr(dst, name, value, follow_symlinks=follow_symlinks)
PermissionError: [Errno 13] Permission denied: '/mnt/c/Users/.../module/spiders' 

奇怪的是,当我不使用虚拟环境时,它工作得很好。有什么办法可以解决这个问题吗?

非常感谢。

而不是

python3 -m venv /Directory/

尝试

python3 -m venv Directory

前者将您的虚拟环境作为目录放在 / 而不是当前目录中。

(请不要调用你的虚拟环境目录;))