1. 程式人生 > >spacemacs及python學習-坑之記錄

spacemacs及python學習-坑之記錄

window load connect conf 計劃 -m clone ant 目錄

Table of Contents

  • 1. spacemacs
    • 1.1. .spacemacs 文件
    • 1.2. 項目文件
    • 1.3. open shell windows
    • 1.4. emacs基礎
      • 1.4.1. 自動刪除沒有用到的package
      • 1.4.2. 自動縮進 indent-region
      • 1.4.3. dired-mode
    • 1.5. 配置emacs使用本地elpa庫
      • 1.5.1. 方法1
      • 1.5.2. 方法2
    • 1.6. emacs中無法啟動pythonshell
  • 2. python
    • 2.1. builtin fuction
    • 2.2. 查看python內置函數的方法
    • 2.3. a test is not a unit test if :
  • 3. 網絡問題
    • 3.1. 使用lantern和設置git代理解決 gitgub clone 緩慢的問題。
      • 3.1.1. lantern
      • 3.1.2. STARTED GIT代理
  • 4. rsync同步elpa庫
    • 4.1. 下載windows 客戶端
    • 4.2. 添加客戶端bin目錄到環境變量中
    • 4.3. 同步elpa庫
    • 4.4. 添加自動同步任務

1 spacemacs

1.1 .spacemacs 文件

1.2 項目文件

在項目根目錄下新建一個空文件:

.projectile

1.3 open shell windows

hM-x eshell M-x shell

1.4 emacs基礎

1.4.1 自動刪除沒有用到的package

M-x package-autoremove

1.4.2 自動縮進 indent-region

C-M-\ 自動縮進所選的代碼或者縮進所有代碼

1.4.3 dired-mode

+: 創建一個目錄 C-x C-f :新增一個文件 g: 刷新目錄 c: 復制文件 d:標記刪除文件 x: 執行所有標記

1.5 配置emacs使用本地elpa庫

在同步了elpa庫到本地後,想要在讓emacs使用本地的庫。

1.5.1 方法1

在.emacs.d/init.el開頭添加如下代碼

(require ‘package)
(setq package-enable-at-startup nil)
(setq package-archives ‘(("melpa" . "~/.emacs.d/mirror-elpa/melpa/")
                         ("org"   . "~/.emacs.d/mirror-elpa/org/")
                         ("gnu"   . "~/.emacs.d/mirror-elpa/gnu/")))

1.5.2 方法2

如果使用的是spacemacs,則在 defun dotspacemacs/user-init 函數內添加如下代碼 windows的下使用絕對路徑,格式是//?/盤符/文件夾 ,或者可以把鏡像放到你的C:\Users\<你的用戶名>\AppData\Roaming目錄下面然後可以使用 ~/elpa-mirror/melpa/ 這樣的路徑

(setq configuration-layer--elpa-archives
    ‘(("melpa-cn" . "//?/f:/elpa-mirror/melpa/")
      ("org-cn"   . "//?/f:/elpa-mirror/org/")
      ("gnu-cn"   . "//?/f:/elpa-mirror/gnu/")))

1.6 emacs中無法啟動pythonshell

每次啟動python shell都報錯

Unknown option: --
usage: c:\Users\xxxxx\AppData\Local\Programs\Python\Python36-32\python.exe [option] ... [-c cmd | -m mod | file | -] [arg] ...
Try `python -h‘ for more information.

Process Python exited abnormally with code 2

解決辦法,M-x customize-group,接著輸入python回車,然後找到python shell interpreter args。然後改成-i,左鍵state然後選save for future session. 如果是spacemacs,需要在.spacemacs文件中把參數寫到 dotspacemacs-configuration-layers的python變量裏。

(python :variables
         python-test-runner ‘(nose pytest)
         python-shell-interpreter-args "-i")

2 python

2.1 builtin fuction

2.2 查看python內置函數的方法

dir(__builtins__)

2.3 a test is not a unit test if :

  • read or write from the filesystem
  • read or write from the network
  • read or write from a database
  • cannot run tests in parallel
  • test suite depends on a environment configuration
  • the execution order of the tests is important to make all tests passes
  • test is run not fast

3 網絡問題

3.1 使用lantern和設置git代理解決 gitgub clone 緩慢的問題。

3.1.1 lantern

首先,你需要下載lantern,這是鏈接

3.1.2 STARTED GIT代理

Git 目前支持的三種協議 git://、ssh:// 和 http://,其代理配置各不相同:core.gitproxy 用於 git:// 協議,http.proxy 用於 http:// 協議,ssh:// 協議的代理需要配置 ssh 的 ProxyCommand 參數。對於所有的協議全部使用 SSH 隧道進行代理

  • GIT 協議的配置
  • lantern的代理端口:

http(s)代理服務器):127.0.0.1:54932 socket代理服務器:127.0.0.1:54931 如果不確定,雙擊lantern會打開一個web頁面,點擊【設置】》【高級設置】,會顯示lantern的代理配置。

  • 下載connect工具

使用 https://bitbucket.org/gotoh/connect 工具進行代理的轉換,各發行版一般打包為 proxy-connect 或者 connect-proxy。打開上面的鏈接後,在頁面的左邊最下面點擊Downloads。點擊connect-1.104-win32-msvc.zip下載到本地。解壓文件,將文件connect.exe所在的目錄添加到環境變量的PATH中。打開CMD命令窗口,輸入connect回車。如果提示:

connect --- simple relaying command via proxy.
Version 1.104
usage: C:\Program Files\Git\mingw64\bin\connect.exe [-dnhst45] [-p local-port]
          [-H proxy-server[:port]] [-S [user@]socks-server[:port]]
          [-T proxy-server[:port]]
          [-c telnet-proxy-command]
          host port

表示配置正確。

  • 建立 socks5proxywrapper 文件
#!/bin/sh
connect -S 127.0.0.1:54931 "$@"
  • 配置 git 修改你的home目錄下的.gitconfig文件,如果沒有請新建一個
[core]
        gitproxy = ~/socks5proxywrapper

或者

export GIT_PROXY_COMMAND="~/socks5proxywrapper"
  • SSH 協議的配置
  • 建立 ~/soks5proxyssh 文件
#!/bin/sh
ssh -o ProxyCommand="~/socks5proxywrapper %h %p" "$@"
  • 配置 git 使用該 wrapper
export GIT_SSH="~/socks5proxyssh“

當然也可以直接配置 ~/.ssh/config 的 ProxyCommand

  • HTTP 協議的配置

修改你的home目錄下的.gitconfig文件,如果沒有請新建一個

[http]
        #這裏是因為 Git 使用 libcurl 提供 http 支持
        proxy = socks5://127.0.0.1:54931
  • 所有協議全部使用 http 代理

在前一部分的基礎上, /path/to/socks5proxywrapper 文件改為

#!/bin/sh
connect -H 192.168.1.100:8080 "$@"
  • HTTP 協議配置

[http] proxy = http://127.0.0.1:54931

  • 針對域名啟用代理

gitproxy 參數提供 * for * 結構,具體看 man git-config 的 core.gitproxy 部分。

4 rsync同步elpa庫

4.1 下載windows 客戶端

連接地址

4.2 添加客戶端bin目錄到環境變量中

  • 將安裝包解壓到任意位置。
  • 添加客戶端路徑到path變量中右鍵點擊計算機》屬性》高級系統設置》高級》環境變量

找到系統變量的PATH變量,點擊編輯按鈕。 windows10系統點擊新建,輸入客戶端的bin目錄絕對路徑(如:F:\rsync\bin),點擊確定。windows其他版本系統,將路徑添加到值的最後。

4.3 同步elpa庫

rsync -avzP –delete rsync://mirrors.tuna.tsinghua.edu.cn/elpa/ /cygdrive/f/elpa-mirror

-delete 選項,表示客戶端上的數據要與服務器端完全一致,如果 linuxsirhome目錄中有服務器上不存在的文件,則刪除。最終目的是讓linuxsirhome目錄上的數據完全與服務器上保持一致;用的時候要 小心點,最好不要把已經有重要數所據的目錄,當做本地更新目錄,否則會把你的數據全部刪除; /cygdrive/f/elpa-mirror 為同步到本地的目錄。配置文件中寫路徑時格式要轉換,例如我這裏把目錄放到f盤,則這麽寫/cygdrive/f/你的目錄

整個鏡像約占 1 GB,emacs-china rsync地址為:

rsync://elpa.emacs-china.org/elpa/

下遊 Tsinghua Mirrors 的 ELPA 鏡像 也提供了 Rsync 服務,地址是:

rsync://mirrors.tuna.tsinghua.edu.cn/elpa/

上遊 GNU ELPA 和 MELPA 提供了 Rsync 服務,其地址分別為:

rsync://elpa.gnu.org/elpa/
rsync://melpa.org/packages/

4.4 添加自動同步任務

將同步命令添加到window的任務列表中,實現自動同步

  • 將同步命令保存到一個以cmd結尾的文本文件中
  • 在Window中添加任務計劃,不同的系統,操作有點不一樣 windows xp/Server 2003 : 開始->設置->控制面板->任務計劃->打開添加任務計劃->下一步 windows 7/Server 2008 : 開始-> 控制面板 -> 管理工具 -> 任務計劃 windows 10 在運行中輸入 任務計劃程序 打開任務計劃面板在常規中填寫任務名稱,在觸發器中設置同步間隔,在操作中指定要執行的文件。

Created: 2017-08-23 周三 08:08

spacemacs及python學習-坑之記錄