【问题标题】:What is the windows equivalent to the ln -s <target folder> <link folder> unix symbolic link command?ln -s <目标文件夹> <链接文件夹> unix符号链接命令等效的窗口是什么?
【发布时间】:2013-06-19 06:04:14
【问题描述】:

我正在尝试按照以下教程为 Twilio 和 App Engine 库创建程序环境。

https://developers.google.com/appengine/articles/twilio

我很好,直到它说:

将 Twilio 库及其依赖项链接到您的项目中:

$ ln -s venv/lib/python2.7/site-packages/twilio .

$ ln -s venv/lib/python2.7/site-packages/httplib2 .

$ ln -s venv/lib/python2.7/site-packages/six.py .

我已经研究过,看来我会使用类似的东西

mklink /d venv\lib\python2.7\site-packages\twilio .

如果我理解正确,我基本上需要了解“.”代表什么,因为那是符号链接的目标? (不确定。)

我正在使用 cmd.exe 作为 shell,并且可以真正使用比我更了解 Unix 的人的帮助。

编辑:

查看我的目录后,venv 之后的路径是 venv\lib\site-packages。目录的那个位置已经有 Twilio 和 httplib2 的文件夹。六个此时存在于名为six.py 的文件中。

Unix 命令的意图是创建从那些现有文件夹到工作目录的符号链接吗?因为它的所作所为告诉我我无法为 Twilio 和 httplib2 创建现有文件。 (venv\lib\site-packages 目录中已经有文件夹,它可以让我为六个做一个符号链接,但它会递归地在整个六个文件夹的深处创建 4500 层。)

【问题讨论】:

    标签: windows unix cmd symlink


    【解决方案1】:

    试试这个:

    mklink /D .\ venv\lib\python2.7\site-packages\httplib2
    

    注意:mklink [OPTION] LINK TARGET(与linux的ln -s相比,链接和目标是翻转的)

    Mklink 命令语法:

    MKLINK 有 3 个选项 /D、/H 和 /J。您还需要指定路径 到新的符号链接和原始文件的路径或 目录。

    /D – 用于为目录创建符号链接(d 表示目录)

    /H - 用于创建硬链接(h 为硬链接)

    /J – 用于创建 目录联结(j为联结)

    顺便说一句,总是更喜欢 mklink /D 而不是 mklink /J。 Windows 资源管理器将删除联结的全部内容(后者),而在删除目录链接(前者)时,它只会删除该链接。

    . 是当前目录(从您运行命令的位置)。在上面的示例中,我将其更改为 .\ 以使其明确。

    对于文件: Helpful link.

    如果您无法通过/D 获得特权,请使用硬链接(选项/H):

    mklink /H .\six.py venv\lib\python2.7\site-packages\six.py
    

    【讨论】:

    • 好吧,再深入一点,我认为我遇到的问题比我考虑的要多。 venv\lib\python2.7\site-packages\ 不存在。 venv\lib\site-packages\ 确实如此。我讨厌大多数 python 的东西是如何假设 Unix 的。现在我不确定如何进行。在我看来,mklink 与 ln 命令中的参数顺序也颠倒了。我试过 mklink /D 。 venv\Lib\site-packages\six 它告诉我无法创建已经存在的文件。
    • 好的,我正在取得进展。参数是从 Unix 中的 ln 翻转的,因此正确的命令是 mklink /D twilio venv\lib\site-packages\twilio 效果很好,但是,要链接的前两项是目录。最后一个是单个 .py 文件,不会像前两个那样链接。在文件和目录上做符号链接有什么神奇的方法吗?
    • 嗨 Golgauth,感谢您的帮助。对于遇到此问题的其他人,Windows 上的目录结构略有不同,因此请密切注意该部分,还将参数从 ln 翻转到 mklink,在 mklink 中它是目标,源,而不是源,目标。最后,/J 连接标志不再删除整个目录,这仅在 Vista 首次添加功能时才如此。我在这里发布了一个包含更正代码和描述的快速博客。 anarchicorder.blogspot.com/2013/06/…
    【解决方案2】:

    '.' 代表当前文件夹,在 *nix-land 和 Windows 中。因此,这些命令正在建立符号链接。
    这些就等于说:

    ln -s venv/lib/python2.7/site-packages/twilio twilio
    

    或在 Windows(Vista、7、2008 及更高版本)中:

    mklink /d twilio venv\lib\python2.7\site-packages\twilio 
    

    在哪里

    • twilio 是要创建的目标或链接
    • venv\lib\python2.7\site-packages\twilio是源目录

    记住mklink 有相反的意思 | ln -s 具有的目标语法。

    ln 是源 -> 目标
    mklink 是目标 -> 源

    【讨论】:

    • 好吧,我已经确定了这一点,并想分享确切的答案,以防将来有人解决这个问题。与 Unix ln 相比,参数顺序在 mklink 上翻转。本教程的移植版本为: mklink /D twilio venv\lib\site-packages\twilio mklink /D httplib2 venv\lib\site-packages\httplib2 mklink Six.py venv\lib\site-packages\six.py 注意在最后一个链接上,它指向一个文件,而不是一个目录,你省略 /D 因为文件链接是默认的。
    猜你喜欢
    • 2012-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-10
    • 2015-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多